Entity Framework group by和get max

时间:2015-05-07 12:49:39

标签: c# .net entity-framework

让我说我的表格结构如下:

MyRow:

Id Name Date
1  A    2015/01/01
2  B    2015/01/01
3  C    2015/01/02
4  A    2015/01/03
5  B    2015/01/03
6  A    2015/01/02
7  C    2015/01/01

使用EF我希望获得MyRow列表,其中包含具有不同名称和最新日期的元素,因此在这种情况下它将是:

4 A 2015/01/03
5 B 2015/01/03
3 C 2015/01/02

我从这样的事情开始:

var myRows = context.MyRows.GroupBy(mr => mr.Name).Select(..now wth with max..)

2 个答案:

答案 0 :(得分:2)

订购每个小组并取最后一个小组。

或者由于EF没有(我上次检查过)支持Last(),请反向订购每个组并采取第一个:

var myRows = context.MyRows
  .GroupBy(mr => mr.Name)
  .Select(grp => grp.OrderByDescending(mr => mr.Date).First());

答案 1 :(得分:0)

var data = context.MyRows.Group(p => p.Name)
                    .Select(g => new { 
                                      Type = g.Key, 
                                      Date = g.OrderByDescending(p => p.Date)
                                              .FirstOrDefault()
                                     }