向数据表中添加GroupBy行

本文关键字:GroupBy 添加 数据表 | 更新日期: 2023-09-27 17:49:41

我在一个数据表上做一个groupby:

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>());                
}

向数据表中添加GroupBy行

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

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

HTH .

唯一的方法是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]