Mam listę słowników, które mają klucze typu ciąg i wartości, które są ints.Jak znaleźć maksymalną wartość dla każdego klucza na liście słowników za pomocą LINQ?
Wiele słowników zawiera te same klucze, ale nie wszystkie.
Moje pytanie brzmi: używając LINQ, jak znaleźć maksymalną wartość powiązaną z każdym odrębnym kluczem we wszystkich słownikach?
Tak na przykład, biorąc pod uwagę następujące wejścia:
var data = new List<Dictionary<string, int>>
{
new Dictionary<string, int> {{"alpha", 4}, {"gorilla", 2}, {"gamma", 3}},
new Dictionary<string, int> {{"alpha", 1}, {"beta", 3}, {"gamma", 1}},
new Dictionary<string, int> {{"monkey", 2}, {"beta", 2}, {"gamma", 2}},
};
Chciałbym jakąś kolekcji, która zawiera:
{"alpha", 4},
{"gorilla", 2},
{"gamma", 3},
{"beta", 3},
{"monkey", 2}
(obecnie jestem pętli listę i śledzenie rzeczy siebie, naprawdę właśnie zastanawiasz się, czy jest ładniejszy LINQ-esque sposób zrobienia tego)
EDYCJA: Ja także nie wiem, co klucze strunowe są z góry
Marvelous! Dlaczego jest to zawsze tak oczywiste, gdy widzisz :-) – Argos
Istnieje oczywiście wiele innych sposobów robienia tego samego: 'data.SelectMany (d => d) .Grupa (d => d.Key, d => d.Value, (k, i) => new {GroupName = k, MaxValue = i.Max()}) 'lub' od d w data.SelectMany (i => i) grupa d.wartość przez d .Key do g wybierz nowy {GroupName = g.Key, MaxValue = g.Max()} 'są dwie z nich. –