我有像这样的数据表:
Group Item
1 1
1 2
2 3
2 4我需要一个linq select来获取输出:IEnumerable<Group>,其中
class Group
{
IEnumerable<Item> Items;
}用一个表达式就可以做到吗?
谢谢!
更新: LINQ-to-objects (我有datatable)
发布于 2011-11-16 18:17:08
因为您有一个没有实现LINQ接口的DataTable对象,所以我建议您首先将它们转换为更“对象”的东西,然后再使用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属性。
发布于 2011-11-16 17:49:36
// untested
var groups = from row in myTable
group row by row.Group into gr
select new Group { Items = gr.Select(g => g.Item) } ;https://stackoverflow.com/questions/8149528
复制相似问题