2010-03-30 6 views
1

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

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 

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

ответ

5

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

+0

Мне очень понравился ответ, я предварительно заказал новую книгу. ЛОЛ. Я полагаю, что он полон того же ценного совета. –

+0

Я использовал foreach (var a в контексте.TableName.GroupBy (item => item.Name)) {foreach (var b in a) {// a теперь строка TableName}} –

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