我在linq中寻找一种通过使用“group by”子句获取最大id记录的方法
考虑以下示例数据
Table: ProcessAud
ProcessSeq ProjectSeq ProjectValue Active
11 1 50000 Y
12 1 10000 Y
13 2 70000 Y
14 2 90000 Y
其中我想得到两个记录作为一个列表,这是第二个和第四个
记录(即)过程12和14。我试着跟着
var ProcessAudList = ProcessAudService.FilterBy(x => x.Active == "Y"
).GroupBy(x => x.ProjectSeq).Max().ToList();
它不能正常工作,所以如何在linq中完成它。请大家帮忙。
最佳答案
你想从每组中选出最好的记录。
var ProcessAudList = ProcessAudService.Where(x => x.Active == "Y")
.GroupBy(x => x.ProjectSeq, (key,g)=>g.OrderByDescending(e=>e.ProjectValue).First());
检查demo code