Linq - 获取不同客户的最新条目

时间:2014-04-06 18:43:10

标签: linq

我尝试创建一个linq查询但不幸的是我没有想法来解决我的问题。 我希望得到所有客户的最高条目,并且只有5个条目按日期排序。

ID   Date           ID_Costumer    
 1  - 01.01.2014  -   1    
 2  - 02.01.2014  -   2     
 3  - 02.01.2014  -   1    
 4  - 03.01.2014  -   1 --> this value    
 5  - 04.01.2014  -   3    
 6  - 05.01.2014  -   3 --> this value    
 7  - 05.01.2014  -   4      
 8  - 06.01.2014  -   4 --> this value    
 9  - 08.01.2014  -   5 --> this value    
 10 - 09.01.2014  -   6 --> this value

我尝试使用此查询

  var query = from g in context.Geraete 
              where g.Online && g.AltGeraet == false 
              select g;

  query.GroupBy(g => g.ID_Anbieter).Select(g => g.Last());
  query.Take(5);

但它不起作用。

1 个答案:

答案 0 :(得分:2)

您应该将选择组中最后一项的结果分配回query变量:

 query = query.GroupBy(g => g.ID_Anbieter).Select(g => g.Last());
 var result = query.Take(5);

请注意 - Linq to Entities不支持运算符Last()。此外,我认为您应该在从每个组中选择最新项目时添加订购,并选择前5个最新项目:

 var query = from g in context.Geraete 
             where g.Online && !g.AltGeraet
             group g by g.ID_Anbieter into grp
             select grp.OrderByDescending(g => g.Date).First();

 var result = query.OrderByDescending(x => x.Date).Take(5);