2015-05-07 59 views
3

可以說,我已經表如下結構:實體框架GROUP BY和獲得最大的

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..) 

回答

3

訂購每個組,並採取每個組的最後一個。

或者因爲EF沒有(我最後一次檢查)支持Last(),責令反向各組取前:

var myRows = context.MyRows 
    .GroupBy(mr => mr.Name) 
    .Select(grp => grp.OrderByDescending(mr => mr.Date).First()); 
0
var data = context.MyRows.Group(p => p.Name) 
        .Select(g => new { 
             Type = g.Key, 
             Date = g.OrderByDescending(p => p.Date) 
               .FirstOrDefault() 
            } 
+0

然後,你需要做的'VAR myRows = data.Select (x => x.Date)'來獲取你放在名爲'Date'的字段中的'MyRow',然後如果你把它取出並簡化你不使用的東西('Type = g.Key')或者不能被擊中(用'First'代替'FirstOrDefault'),你最終會得到我的答案。 –