tüm anahtarları alın bu var:sözlük içeren değeri x
Dictionary<integer, string> dict = new Dictionary<integer, string>();
ben değerini abc
ihtiva sözlükte tüm öğeleri seçmek istiyorum.
Bunu kolayca yapmamı sağlayan dahili bir işlev var mı?
tüm anahtarları alın bu var:sözlük içeren değeri x
Dictionary<integer, string> dict = new Dictionary<integer, string>();
ben değerini abc
ihtiva sözlükte tüm öğeleri seçmek istiyorum.
Bunu kolayca yapmamı sağlayan dahili bir işlev var mı?
Eh o LINQ ile makul basit: Bu hatta biraz verimli olmayacaktır
var matches = dict.Where(pair => pair.Value == "abc")
.Select(pair => pair.Key);
Not o - her girdiyi kontrol etmek ihtiyacı olarak, bir O(N)
operasyon.
sık bunu yapmak gerekiyorsa, başka bir veri yapısını kullanarak düşünebilirsiniz - Dictionary<,>
özellikle anahtar tarafından hızlı aramalar için tasarlanmıştır.
Yerleşik işlev? var maçları = dicti: Özür Hayır ... ama başka (o kadar güzel değil) yolu "abc" da olabilir içeren bir değere sahip anahtarlarını almak istiyorsanız Yapabilirsin foreach(KeyValuePair<integer, string> ...
kullanarak yineleme etmektir. Burada (pair => pair.Value.Contains ("abc")) .Select (pair => pair.Key); – jmrnet
@ Kullanıcı: 'Sözlük <,>' sadece Sözlük 'için kısaltılmıştır. Sözlüğün ne kadar büyük? Aranacak kaç değer var? Saniyede bir kez çok sık değilse, eğer oldukça küçük bir sözlükse ve sadece tek bir değer arıyorsanız ... –
Sözlükün kapasitesi 10 anahtar ve 4 değerdir ("Sol", "Sağ", "Ön" ,"Geri"). Ve bazen fonksiyon saniyede yaklaşık 10 kez çalışır. – Elmo