将GroupBy行添加到数据表中

时间:2011-04-08 10:52:44

标签: c# linq ado.net

我正在对这样的数据进行分组:

List<DataRow> allRows = priceData.IndexTable.AsEnumerable().ToList();    
var fwdRowGroups = allRows.GroupBy(row => row.Field<object>("AcctId"));
DataTable fwdsDataTable = new DataTable();

我需要将这些行添加到新的数据表中:fwdsDataTable。 我该怎么做?谢谢。

这对我不起作用:

foreach (var row in fwdRowGroups)
{
    fwdsDataTable.Rows.Add(row.Cast<DataRow>());                
}

2 个答案:

答案 0 :(得分:0)

fwdsDataTable.Rows.Add(row.Cast<DataRow>());

Add方法添加一行,但强制转换返回多行。这不会奏效。您必须遍历分组结果集中的每一个。另外,你可以直接复制一行吗?数据集对我来说已经有一段时间了,但是你不必为新表创建一个新行并复制数据吗?

HTH。

答案 1 :(得分:0)

唯一的方法是for-each,可以在这里使用它。

DataTable t = new DataTable();
var fwdRowGroups = t.AsEnumerable().GroupBy(row => row.Field<object>("AcctId"));

DataTable g = new DataTable();
foreach (var row in fwdRowGroups)
{
    g.Rows.Add(row);
}

另请注意删除多余的ToList()。你需要什么?

DataRow.Field<T>()中使用更具体的类型,它是为类型安全操作创建的。否则只使用row["AcctId]