对于我的Linq查询,C#扩展方法等价于什么?

对于我的Linq查询,C#扩展方法等价于什么?,c#,linq,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(); (第二个查询的格式不正确) 我的问题

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

 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()
至于要回答的评论:


您可以在
groupby
方法之前设置
OrderBy
,如下所示:

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

您的查询缺少一个select;)C#规范准确地描述了如何将查询理解表达式转换为方法调用;有关详细信息,请查阅。是文字上的。。。如果将其转换为sql,则可能无关紧要。如果Linq2反对,那绝对是个好主意。你先错过了一个
,这会给你
IEnumerable
,而不是
IEnumerable
,谢谢大家(@Selman22,@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()
LI.Where(element => element.C_ID != null)
     .OrderBy(element => element.C_ID)
     .GroupBy(element => element.C_ID)
     .Last().ToList()