Mam kolekcję MyClass, której chciałbym użyć przy użyciu LINQ, aby uzyskać różne wartości, i uzyskać ciąg Słownik> Ciągnik> w wyniku, ale ja nie mogę wymyślić, jak mogę to zrobić prostsze niż robię poniżej. Jaki byłby nieco czystszy kod, który można użyć, aby uzyskać ciąg Dictionary> Ciągnik> jako mój wynik?Zapytanie LINQ o zwrócenie słownika <ciąg, ciąg>
var desiredResults = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
var queryResults = (from MyClass mc in myClassCollection
orderby bp.SomePropToSortOn
select new KeyValuePair<string, string>(mc.KeyProp, mc.ValueProp)).Distinct();
foreach (var item in queryResults)
{
desiredResults.Add(item.Key.ToString(), item.Value.ToString());
}
Co chcesz zrobić ze zduplikowanymi kluczami? Po prostu weź pierwsze i zignoruj kolejne? Należy pamiętać, że słowniki nie są zamawiane, więc twoje zamówienie w zapytaniu nie będzie miało żadnego skutku ... –
Może to, czego szukasz, to implementacja IDential z SortedDictionary. W przeciwnym razie sortowanie w słowniku nie ma sensu. – Fede