我在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

07-25 21:19