2

次のコレクションがある場合:

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

そして、私は最終的に:

A-1
B-2
C-1

「B」が重複している場合、値が最も高い「B」を選択したいのはどこですか?

何かのようなもの:

var filteredFoos = foos.GroupBy(x => x.Name).Select_Duplicate_With_Highest_Value
4

4 に答える 4

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)
            };
于 2013-01-07T16:51:19.860 に答える
5
var filteredFoos = 
    foos.GroupBy(x => x.Name)
        .Select(x => new { Name = x.Key, Value = x.Max(f => f.Value) });
于 2013-01-07T16:51:01.063 に答える
2

このクエリを試してください:

var filteredFoos = foos.GroupBy(x => x.Name)
                       .Select(p => new { p.Key, p.Max(x => x.Value) });
于 2013-01-07T16:50:12.713 に答える
0

2列以上の場合:

var subquery = from p in foos
            group p by p.Name into g
            select new
            {
                Name = g.Key,
                Value = g.Max(a => a.Value)
            };
var query = from f in foos
            join s in subquery 
              on f.Name equals s.Name
            where f.Value == s.Value
            select f;

これがSQLに反する場合は、Nameがプリミティブであることを確認してください。

于 2013-01-08T19:18:51.537 に答える