C# 将线性列表中的项目选择到包含子项目的列表中

C# 将线性列表中的项目选择到包含子项目的列表中,c#,linq,C#,Linq,我的数据表如下所示: Group Item 1 1 1 2 2 3 2 4 我需要一个linq select以获取输出: IEnumerable,其中 class Group { IEnumerable<Item> Items; } 类组 { i数不清的项目; } 用一个表达式可以吗 谢谢 upd:LINQ到对象(我有datatable)由于您有一个未实现LINQ接口的datatable对象,我建议您首先将它们转换为更“obje

我的数据表如下所示:

Group  Item
1      1
1      2
2      3
2      4
我需要一个linq select以获取输出:
IEnumerable
,其中

class Group 
{
   IEnumerable<Item> Items;
}
类组
{
i数不清的项目;
}
用一个表达式可以吗

谢谢


upd:LINQ到对象(我有datatable)

由于您有一个未实现LINQ接口的
datatable
对象,我建议您首先将它们转换为更“objecty”的对象,而不是使用LINQ提取数据。
大致如下:

//setup
DataTable dt = new DataTable();
dt.Columns.Add("Group", typeof(int));
dt.Columns.Add("Item", typeof(int));

dt.Rows.Add(1, 1);
dt.Rows.Add(1, 2);
dt.Rows.Add(2, 3);
dt.Rows.Add(2, 4);

// transforms the datatable to an IEnumerable of an anonymous type
// that contains a Group and Item properties
var dataObjects = from row in dt.AsEnumerable()
   select new { Group = row["Group"], Item = row["Item"] };

//after that it's just a group by application
var groups = from row in dataObjects
               group row by row.Group into g
               select new Group{ GroupID = g.Key
                                ,Items = g.Select(i => i.Item)};

我假设
Group
类有一个
GroupID
属性作为组值。

由于您有一个
DataTable
对象没有实现LINQ接口,我建议您首先将它们转换为更“objecty”的对象,而不是使用LINQ来提取数据。
大致如下:

//setup
DataTable dt = new DataTable();
dt.Columns.Add("Group", typeof(int));
dt.Columns.Add("Item", typeof(int));

dt.Rows.Add(1, 1);
dt.Rows.Add(1, 2);
dt.Rows.Add(2, 3);
dt.Rows.Add(2, 4);

// transforms the datatable to an IEnumerable of an anonymous type
// that contains a Group and Item properties
var dataObjects = from row in dt.AsEnumerable()
   select new { Group = row["Group"], Item = row["Item"] };

//after that it's just a group by application
var groups = from row in dataObjects
               group row by row.Group into g
               select new Group{ GroupID = g.Key
                                ,Items = g.Select(i => i.Item)};

我假设
Group
类有一个
GroupID
属性作为组值。

您需要LINQ to SQL或常规LINQ to objects?LINQ to objects(我有datatable)您需要LINQ to SQL或常规LINQ to objects?LINQ to objects(我有datatable)