什么是与Linq查询等效的C#扩展方法?

时间:2015-04-13 18:43:58

标签: c# linq

如何使用扩展方法将第二个查询形成为第一个查询。 顺便说一下,这必须得到所有组的最后一个元素。

 1) var res = from element in LI
      where element.C_ID != null
      group element by element.C_ID
            into groups
            select groups.OrderBy(p => p.C_ID).Last();  

(第二个查询形式不正确)
我的原因是没有订购的团体

 2) LI.Where(element => element.C_ID != null)
     .GroupBy(element => element.C_ID)
     .Last().ToList()

3 个答案:

答案 0 :(得分:3)

LI.Where(element => element.C_ID != null)
 .GroupBy(element => element.C_ID) //a sequence of groups
 .Select(group => group.OrderBy(p => p.C_ID).Last()) //select the last of each group
 .ToList()

答案 1 :(得分:0)

关于spender回答的评论:

LI.Where(element => element.C_ID != null)
 .GroupBy(element => element.C_ID) //a sequence of groups
 .Select(grp => grp.OrderByDescending(p => p.C_ID).First()) //order in descending order and then get first of each group
 .ToList()

答案 2 :(得分:-1)

您可以在OrderBy方法之前制作groupby,例如:

LI.Where(element => element.C_ID != null)
     .OrderBy(element => element.C_ID)
     .GroupBy(element => element.C_ID)
     .Last().ToList()