将 GroupBy 行添加到数据表中

发布于 2024-10-31 04:42:32 字数 454 浏览 4 评论 0原文

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

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

Am doing a groupby on a datable like this:

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

I need to add these rows into a new datatable: fwdsDataTable.
How do I do it?Thanks.

This does not work for me:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦萦几度 2024-11-07 04:42:32
fwdsDataTable.Rows.Add(row.Cast<DataRow>());

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

HTH。

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

The Add method adds one row, but cast returns many. This won't quite work. You'd have to loop through each one in the grouped result set. Also, can you copy a row over directly? It's been a while for me with datasets, but don't you have to create a new row for the new table and copy the data over too?

HTH.

走过海棠暮 2024-11-07 04:42:32

唯一的方法是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() 中使用更具体的类型,它是为类型安全操作而创建的。否则仅使用 row["AcctId]

The only way is for-each and it's ok to use it here.

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

Also note the removal of excess ToList(). What for do you need it?

And use more specific type in DataRow.Field<T>(), it's created for type-safe operations. Otherwise use just row["AcctId]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文