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

但它不起作用。

您应该将从组中选择最后一项的结果分配回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);

相关内容

  • 没有找到相关文章

最新更新