List <string> nasıl sipariş edebilirim?


Yanıtlar:


239
ListaServizi = ListaServizi.OrderBy(q => q).ToList();

@Servy OrderBy'yi kullanmanın bir nedeni, ListaServizi'nin bir Sıralama yöntemine sahip olmamasıdır, çünkü olarak bildirilmiştir IList<string>. Bu kod, daha fazla olumlu oy alan yanıtların aksine, aslında yazıldığı gibi çalışacaktı ListaServizi.Sort(). Bunun seçeceğim çözüm olduğunu söylemiyorum, ama cevabımı gönderdiğimde aslında tek doğru cevap buydu.
phoog

Eğer seçeceğiniz çözüm değilse, neden onu bir cevap olarak öneriyorsunuz? Cevap olarak ne yapacağınızı önerin; bu, türü IList'ten List'e değiştirmek anlamına geliyorsa, böylece onu çağırabilirsiniz .Sort, o zaman neden yapmayasınız ?
Servy

1
@Servy Problem özelliğini değiştirmeden sorunu çözdü. Açık ara tercih edilen yol budur. Dahası, problem ifadesi, çok önemli olan uygulama modeli üzerinden arayüzü kullanır. Liste türüne değişiklik önermek doğrudur, ancak sorunun değiştirilmesi gerektiğinden, doğru yanıtın ardından alternatif bir yanıt olarak yapılmalıdır.
Aurelien Ribon

1
@ AurélienRibon Problem ifadesiyle ilgili hiçbir şey değişkenin türünün değiştirilemeyeceğini söylemiyor. Gereksinimler, özellikle bir List. Ve bu cevapla ilişkili maliyet önemsiz değildir ve ayrıca gereksizdir. Kelimenin tam anlamıyla hiçbir şey kazanmaz . Koda karmaşıklık katar, daha az özlüdür, daha az verimlidir, burada tam anlamıyla dezavantajlardan başka hiçbir şey yoktur.
2014 13


12

Diğer yanıtlar önermek için doğrudur Sort, ancak depolama konumunun olarak yazıldığı gerçeğini gözden kaçırmış görünüyorlar IList<string. Sortarayüzün bir parçası değil.

ListaServiziBunun her zaman a içereceğini biliyorsanız List<string>, bildirilen türünü değiştirebilir veya bir atama kullanabilirsiniz. Emin değilseniz türü test edebilirsiniz:

if (typeof(List<string>).IsAssignableFrom(ListaServizi.GetType()))
    ((List<string>)ListaServizi).Sort();
else
{
    //... some other solution; there are a few to choose from.
}

Belki daha deyimsel:

List<string> typeCheck = ListaServizi as List<string>;
if (typeCheck != null)
    typeCheck.Sort();
else
{
    //... some other solution; there are a few to choose from.
}

ListaServiziBunun bazen farklı bir uygulamasını içereceğini biliyorsanız, IList<string>bir yorum bırakın ve sıralamak için bir veya iki öneri ekleyeceğim.


5
ListaServizi.Sort();

Bunu senin için yapacak. Bir dizi diziyle yeterince anlaşılır. Nesneleri sıralarken biraz daha akıllı olmanız gerekir.


3
ListaServizişudur IList<string>; arayüzün bir Sortyöntemi yok. En azından burada bir alçıya ihtiyacın var.
phoog

3
List<string> myCollection = new List<string>()
{
    "Bob", "Bob","Alex", "Abdi", "Abdi", "Bob", "Alex", "Bob","Abdi"
};

myCollection.Sort();
foreach (var name in myCollection.Distinct())
{
    Console.WriteLine(name + " " + myCollection.Count(x=> x == name));
}

çıktı: Abdi 3 Alex 2 Bob 4

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.