SORU
10 Mayıs 2010, PAZARTESİ


C bir Sözlük en yüksek değer anahtarı almak için iyi bir yoldur

Dictionary<string, double> results en yüksek değeri anahtar almaya çalışıyorum.

Bu ben şimdiye kadar ne var:

double max = results.Max(kvp => kvp.Value);
return results.Where(kvp => kvp.Value == max).Select(kvp => kvp.Key).First();

Bu biraz verimsiz gibi görünüyor, ancak bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyordum.

CEVAP
10 Mayıs 2010, PAZARTESİ


Bu en okunabilir(n) cevap standart SERİ kullanıyor sanırım.

var max = results.Aggregate((l, r) => l.Value > r.Value ? l : r).Key;

edit: CoffeeAddict için açıklama

Aggregate bilinen fonksiyonel kavramı Fold SERİ adıdır

Üzerinde kümesinin her elemanı döngüler ve verdiğiniz ne olursa olsun geçerlidir. Burada, ben sağlamak işlevi büyük değeri karşılaştırma işlevi. Döngü, Aggregate en son ne zaman dönüş sonucu hatırlarken benim fonksiyonu denir. Karşılaştırma görevim 8 ** olarak değişken içine beslenir. 9* *değişken seçili olan elementtir.

Toplama tüm fiziksel sonra, benim karşılaştırma işlevi adlı çok en son ne zaman sonuç verir. Sonra sözlük bir giriş olduğunu biliyorum çünkü .Key üyesi okudum

Burada bakmak için farklı bir yol [bu derler garanti etmiyorum ;) ]

var l = results[0];
for(int i=1; i<results.Count();   i)
{
    var r = results[i];
    if(r.Value > l.Value)
        l = r;        
}
var max = l.Key;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Россия

    Google Ро

    9 Temmuz 2007
  • Photoshop Training Channel

    Photoshop Tr

    13 Temmuz 2012
  • Tina Chen

    Tina Chen

    26 Mayıs 2012