对数据表中的行进行分组

时间:2013-05-24 11:59:55

标签: c# linq

我有兴趣在2列之后对数据表中的某些行进行分组,并将结果保存在另一个数据表中。我有以下代码用于分组行:

var result = from t in newtable.AsEnumerable()
               group t by new { Col1= t.Field<String>("ID1"), Col2=  t.Field<String>("ID2") } into grp
                 select new
                 {
                     Col1= grp.Key.ID1,
                     Col2= grp.Key.ID2
                 };

如何轻松地将result转换为数据表?

2 个答案:

答案 0 :(得分:2)

只需使用CopyToDatatable生成查询:

IEnumerable<DataRow> query = from t in newtable.AsEnumerable()
group t by new { Col1 = t.Field<String>("ID1"), Col2 = t.Field<String>("ID2") } into grp
 select new
{
Col1 = grp.Key.ID1,
Col2 = grp.Key.ID2
};
DataTable boundTable = query.CopyToDataTable<DataRow>();

CopyToDatatable位于System.Data.DataSetExtensions名称空间

答案 1 :(得分:0)

你必须应用foreach循环这样的东西

foreach (var item in results)
                {
                    Datatable dt = new DataTable();
                    DataRow dr = dt.NewRow();
                    dr["Col1"] = item.Col1;
                    dr["Col2"] = item.Col2;
                    dt.Rows.Add(dr);
                }

您必须应用此类方案。

希望它有效。