2008-10-24 14 views
7

Bence sıralanmış bir nesne koleksiyonum var (SortedList ya da SortedDictionary olabilir, bunu okumak için kullanacağım, bu yüzden performans eklemek o kadar önemli değil). I-inci değerini nasıl alabilirim? Örneğin, örn. koleksiyonda 1, 2, 3, 4, 5 rakamları olduğunda ve ortanca (bu örnekte 3) istediğim zaman, nasıl yapabilirim?Bir SortedList ya da SortedDist öğesinden i-th değeri alma

cevap

7

böyle bir şey deneyin:

list.Values ​​[list.Count/2];

Gerçek bir medyanın, Kont eşitse ortadaki iki sayıyı ortalayacağını unutmayın.

+1

Cheers, bu çalışma Sadece SortedList için. SortedDictionary için bunu yapmanın bir yolu var mı? – Grzenio

21

Bir sıralı liste için

list.Values[index] 

gibi kodu kullanabilirsiniz.

dict.ElementAt(index) 

Bununla birlikte, bu liste halinde daha yavaştır: bir SortedDictonary ile

en kolay yolu ElementAt() yöntemini kullanmak olacaktır. Her iki durumda da sayımı kontrol etmeniz gerekir. Tuhaf ise, indeksi = (list.length-1)/2) alın. Hatta, index1 = list.length/2 AND index2 = list.length/2 - 1 değerini al ve değerleri ortalama.

1

SortedDictionary'da bir öğeye göre bir öğe almanız gerekiyorsa, performans zahmetli olur. SortedDictionary ile giriş olarak yeni bir SortedList oluşturun ve SortedList'e erişin. Birçok kez daha hızlı çalışır.

2

aşağıdaki sözdizimini kullanarak belirli bir pozisyonda değerini çıkarabilir:

sortedDictionaryName.ElementAt(index); 

istediğiniz bir dizinde bir elementin anahtar veya değer ayıklamak isterseniz:

sortedDictionaryName.ElementAt(index).Key //For only Key 
sortedDictionaryName.ElementAt(index).Value //For only Value 
İlgili konular