2012-02-06 2 views
1

У меня есть следующий списокLINQ группа по First()

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 по возрастанию, а затем получить первое значение счетчика, SrvID, которые являются идентичными (если таковые имеются) ,

Так что выход будет что-то вроде:

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

Обратите внимание, как идентификатор 5 удаляется из списка, как счетчик и 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; 

Я получаю followng сообщение: метод «Первый» может быть использован только в качестве окончательного Кер y.

+0

Какой вкус LINQ это? –

+0

@Jon Skeet- это из .edmx файла - Entity Framework –

ответ

2

У меня возникла проблема с использованием First в Entity Framework, вы пытались перейти на FirstOrDefault?

2

Самое смешное сообщение полная ошибка:

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

Смежные вопросы