Как получить первую запись в каждой группе с помощью Linq

Учитывая следующие записи:

Id F1 F2 F3 ------------------------------------------------- 1 Nima 1990 10 2 Nima 1990 11 3 Nima 2000 12 4 John 2001 1 5 John 2002 2 6 Sara 2010 4 

Я хочу группировать на основе поля F1 и сортировать по Id и получать все поля из первой записи группы, подобной этим записям:

  Id F1 F2 F3 ------------------------------------------------- 1 Nima 1990 10 4 John 2001 1 6 Sara 2010 4 

Как я могу это сделать с помощью linq?

  var res = from element in list group element by element.F1 into groups select groups.OrderBy(p => p.F2).First(); 
 var result = input.GroupBy(x=>x.F1,(key,g)=>g.OrderBy(e=>e.F2).First()); 

Анель @Alireza абсолютно прав, но вы должны заметить, что при использовании этого кода

 var res = from element in list group element by element.F1 into groups select groups.OrderBy(p => p.F2).First(); 

который аналогичен этому коду, потому что вы заказываете список, а затем выполняете группировку, чтобы получить первую строку групп

 var res = (from element in list) .OrderBy(x => x.F2) .GroupBy(x => x.F1) .Select() 

Теперь, если вы хотите сделать что-то более сложное, например, взять тот же результат группировки, но взять первый элемент F2 и последний элемент F3 или что-то более обычное, вы можете это сделать, изучив приведенный ниже код

  var res = (from element in list) .GroupBy(x => x.F1) .Select(y => new { F1 = y.FirstOrDefault().F1; F2 = y.First().F2; F3 = y.Last().F3; }); 

Таким образом, вы получите что-то вроде

  F1 F2 F3 ----------------------------------- Nima 1990 12 John 2001 2 Sara 2010 4 

Используйте его для достижения желаемого. Затем определите, какие свойства вы хотите вернуть.

 yourList.OrderBy(l => l.Id).GroupBy(l => new { GroupName = l.F1}).Select(r => r.Key.GroupName) 
  • Объект или сложный тип '' не могут быть сконструированы в запросе LINQ to Entities
  • Как сделать массовую вставку - Linq для объектов
  • Entity Framework 4 / POCO - С чего начать?
  • Преобразование String в Int в EF 4.0
  • Сколько Include я могу использовать в ObjectSet в EntityFramework для сохранения производительности?
  • Метод не может быть переведен в выражение хранилища
  • Как вы создаете запрос LINQ to Entities для непосредственного загрузки дочерних объектов, вместо вызова свойства Reference или Load ()
  • LINQ to Entities не распознает метод 'System.String Format (System.String, System.Object, System.Object)'
  • Лучший способ проверить, существует ли объект в Entity Framework?
  • Возможна ли инъекция через динамический LINQ?
  • Указанный член типа «Дата» не поддерживается в LINQ to Exities Exception
  • Давайте будем гением компьютера.