Linq group by First()

时间:2012-02-06 17:02:15

标签: linq entity-framework

我有以下列表

 ID  Counter  SrvID FirstName 
 --  ------   ----- ---------   
 1   34       66M   James 
 5   34       66M   Keith 
 3   55       45Q   Jason 
 2   45       75W   Mike 
 4   33       77U   Will 

我喜欢做的是按ID按升序排序,然后得到Counter,SrvID的第一个值相同(如果有的话)。

所以输出结果如下:

ID  Counter  SrvID FirstName 
--  ------   ----- ---------   
1   34       66M   James 
2   45       75W   Mike 
3   55       45Q   Jason 
4   33       77U   Will 

注意如何从列表中删除ID为5,因为Counter和SrvID与ID 1相同,但是ID 1首先删除了5。

我尝试了以下但没有工作:

     var query =   from record in list1   
     group record by new {record.Counter, record.SrvID } 
     into g   
     let winner =   (from groupedItem in g 
     order by groupedItem.ID     
     select groupedItem   ).First()   
     select winner; 

我收到以下消息: 方法“First”只能用作最终查询操作。

2 个答案:

答案 0 :(得分:3)

有趣的是完整的错误信息是:

"NotSupportedException: The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead."

答案 1 :(得分:2)

我在使用实体框架中的First时遇到问题,您是否尝试过更改为FirstOrDefault