2011-03-03 20 views
15

Bir # sözlüğünü, anahtarının AND değeriyle belirlenen sıraya göre sıralamak istersem ne olur? Değerine göre azalan düzeni ve aynı değere sahip olanlar içinde, anahtarı ile azalan şekilde. Sadece anahtar ya da sadece değer ile sıralamak mümkün görünüyor, ancak her ikisi de oldukça can sıkıcı.Bir kelimeyi AND anahtarına ve değerine göre sıralayın?

+3

sözlüğü sıralamak mümkün değildir, sözlük mağazaları içten bir karma tablo olarak veri ve yeniden sıralanmış olamaz çünkü. İlk listeye dönmelisiniz – Andrey

+0

Anahtarın tam olarak sıralanması amacı nedir? Bir Sözlüğün yanı sıra bazılarını da kullanabilirsiniz ve bundan sonra anahtarın ve değerin ne olduğunu belirtmedim. Sözlük kullanarak bir Sıralama Koleksiyonuna ihtiyacınız varsa kötü bir seçimdir. –

+1

Lütfen yardımcı olsaydı bir aswer'i kabul edin. –

cevap

22
using System.Linq; 
... 
IOrderedEnumerable<KeyValuePair<TKey, TValue>> sortedCollection = myDictionary 
        .OrderByDescending(x => x.Value) 
        .ThenByDescending(x => x.Key); 
+4

'O zaman 'olabilir? – Andrey

+0

@Andrey evet, teşekkürler, kodu buna göre değiştirdim. –

+2

Son 'ToDistionary' neden nedir? sözlük ** sıralanamaz **. Siparişin etkisini yok et. – Andrey

1

Daha karmaşık sipariş düzeni gerekiyorsa, OrderBy ya OrderByDescending arasında aşırı sürümde kullanılması> bir IComparer uygular.

İlgili konular