Как с помощью Linq разделить список на сгруппированные объекты по имени?

StackOverflow https://stackoverflow.com/questions/2543249

  •  23-09-2019
  •  | 
  •  

Вопрос

У меня есть таблица, в которой запись выглядит так

varchar(255) Name  
varchar(255) Text  
varchar(255) Value 

Имя — это имя DDL, Текст — то, что отображается, а Значение возвращается при выборе.Для каждого Имени существует от одного до двадцати вариантов.Без повторения каждой опции, например курсора, есть ли способ получить список объектов, по одному для каждого уникального имени DDL, используя Linq и C#?

Пример данных:

Beds   '4 (10)'  4
Beds   '5 (1)'   5
Beds   '7 (1)'   7
Baths  'NA (13)' NULL
Baths  '0 (1)'   0
Baths  '1 (13)'  1

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

Это было полезно?

Решение

Конечно, просто используйте group ... by

var query = from item in context.TableName
            group item by item.Name;

Альтернативно без выражения запроса:

var query = context.TableName.GroupBy(item => item.Name);

Результатом будет IQueryable<IGrouping<string, ItemType>>.Каждый элемент результата будет группировка:ключ и последовательность элементов с этим ключом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top