使用Linq,如何按名称将列表分成分组对象?

Zac*_*ott 1 c# linq linq-to-sql

我有一张表,记录看起来像这样

varchar(255) Name  
varchar(255) Text  
varchar(255) Value 
Run Code Online (Sandbox Code Playgroud)

Name是DDL名称,Text是显示的内容,Value是在选择时返回的.每个名称都有一到二十个选项.如果不像游标那样迭代每个选项,是否有任何方法可以使用Linq和C#拉出一个对象列表,每个唯一的DDL名称一个?

数据样本:

Beds   '4 (10)'  4
Beds   '5 (1)'   5
Beds   '7 (1)'   7
Baths  'NA (13)' NULL
Baths  '0 (1)'   0
Baths  '1 (13)'  1
Run Code Online (Sandbox Code Playgroud)

我正在考虑做一个外部选择以获取唯一的名称,然后使用内部选择来获取它的选项列表,然后将该集合作为一组列表的列表返回.

Jon*_*eet 5

当然,只需使用 group ... by

var query = from item in context.TableName
            group item by item.Name;
Run Code Online (Sandbox Code Playgroud)

或者没有查询表达式:

var query = context.TableName.GroupBy(item => item.Name);
Run Code Online (Sandbox Code Playgroud)

结果将是一个IQueryable<IGrouping<string, ItemType>>.结果中的每个元素都是一个分组:一个键和一个带有该键的项目序列.