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)