我有一个这样的表:
First Field | Second Field | Third Field | Fourth Field
------------+--------------+----------------+----------------
5 | aaaa | 47 | abc
5 | aaaa | 57 | def
5 | aaaa | 63 | xyz
5 | bbbb | 39 | www
5 | bbbb | 37 | lol
5 | cccc | 84 | yuy
Run Code Online (Sandbox Code Playgroud)
我想通过第一个和第二个字段对此表进行分组,但我想只获得具有最大第三个字段的行.
我怎么能通过c#中的LINQ来做到这一点?
var curi = (from row in customClassList.AsEnumerable()
group row by new
{
First = row.FirstField.ToString(),
Second = row.SecondSield.ToString(),
} into grp
select new FieldsClass
{
First = grp.Key.First,
Second = grp.Key.Second,
Third = grp.Select(p => p.ThirdField).Max().ToShort(),
Fourth = grp.Key.Fourth
}).ToList();
Run Code Online (Sandbox Code Playgroud)
这是我的预期结果:
First Field | Second Field | Third Field | Fourth Field
------------+--------------+----------------+----------------
5 | aaaa | 63 | xyz
5 | bbbb | 39 | www
5 | cccc | 84 | yuy
Run Code Online (Sandbox Code Playgroud)
怎么样
var result = customClassList.GroupBy(x => new {x.FirstField, x.SecondField})
.Select(x => x.OrderByDescending(y => y.ThirdField).First());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
186 次 |
最近记录: |