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

时间:2010-03-30 06:35:40

标签: c# linq linq-to-sql

我有一张表格,其记录如下所示

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

Name是DDL名称,Text是显示的内容,Value是在选择时返回的。每个名称都有一到二十个选项。如果不像游标那样迭代每个选项,有没有办法提取对象列表,每个唯一的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

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

1 个答案:

答案 0 :(得分: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>>。结果中的每个元素都是分组:一个键和一个带有该键的项目序列。