Md *_*lam 5 c# linq oracle group-by max
我正在寻找一种在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
Run Code Online (Sandbox Code Playgroud)
在其中我想获得两个记录作为列表,例如第二和第四
条记录(即ProcessSeq 12和14)。
var ProcessAudList = ProcessAudService.FilterBy(x => x.Active == "Y"
).GroupBy(x => x.ProjectSeq).Max().ToList();
Run Code Online (Sandbox Code Playgroud)
它无法正常工作,因此如何在LINQ中做到这一点。请任何人帮助。
您想从每个组中选择最高记录。
var ProcessAudList = ProcessAudService.Where(x => x.Active == "Y")
.GroupBy(x => x.ProjectSeq, (key,g)=>g.OrderByDescending(e=>e.ProjectValue).First());
Run Code Online (Sandbox Code Playgroud)
查看演示代码
当您使用GroupBy扩展名时,方法将返回您的IGrouping实例,您应按以下方式查询IGrouping实例;
var ProcessAudList = collection.Where(x => x.Active == "Y").GroupBy(x => x.ProjectSeq).Select(x => x.OrderByDescending(a => a.ProcessSeq).FirstOrDefault()).ToList();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助