LINQ GroupBy和Select在不同的属性上

Did*_*xis 1 .net c# linq linq-to-objects group-by

如果我有以下集合:

var foos = new List<Foo>
{
    new Foo{ Name = "A", Value = 1 },
    new Foo{ Name = "B", Value = 1 },
    new Foo{ Name = "B", Value = 2 },
    new Foo{ Name = "C", Value = 1 },
};
Run Code Online (Sandbox Code Playgroud)

我想最终:

A-1
B-2
C-1
Run Code Online (Sandbox Code Playgroud)

在复制"B"的情况下,我想选择具有最高值的"B"?

就像是:

var filteredFoos = foos.GroupBy(x => x.Name).Select_Duplicate_With_Highest_Value
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 5

var filteredFoos = 
    foos.GroupBy(x => x.Name)
        .Select(x => new { Name = x.Key, Value = x.Max(f => f.Value) });
Run Code Online (Sandbox Code Playgroud)


Kit*_*124 5

var query = from p in foos
            group p by p.Name into g
            select new
            {
                Name = g.Key,
                Value = g.Max(a => a.Value)
            };
Run Code Online (Sandbox Code Playgroud)