How to find the maximum value for each key in a List of Dictionaries using LINQ?

Posted by Argos on Stack Overflow See other posts from Stack Overflow or by Argos
Published on 2009-08-12T15:51:25Z Indexed on 2010/04/20 6:13 UTC
Read the original article Hit count: 236

Filed under:
|
|

I have a List of Dictionaries that have keys of type string and values that are ints.

Many of the dictionaries have the same keys in them but not all of them.

So my question is: using LINQ how would I find the maximum value associated with each distinct key across all of the dictionaries?

So for example given the following input:

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}},
};

I would like some kind of collection that contains:

{"alpha", 4},
{"gorilla", 2},
{"gamma", 3},
{"beta", 3},
{"monkey", 2}

(I'm currently looping through the list and keeping track of things myself, really just wondering if there is a nicer LINQ-esque way of doing it)

EDIT: I also don't know what the string keys are in advance

© Stack Overflow or respective owner

Related posts about c#

Related posts about c#3.0