Как с помощью Linq разделить список на сгруппированные объекты по имени?
-
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>>
.Каждый элемент результата будет группировка:ключ и последовательность элементов с этим ключом.