我正在对这样的数据进行分组:
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>());
}
答案 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]