微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据VB.NET中的列值更新DataView

如何解决根据VB.NET中的列值更新DataView

我有一个如下的数据视图:

Id | GroupName | Count
1    DummyName    1
2    DummyName    1
3    StubName     1
4    DummyName    1

我需要根据该行具有相同 GroupName 的总行数更新每行的 Count 列值。所需的输出如下:

Id | GroupName | Count
1    DummyName    3
2    DummyName    3
3    StubName     1
4    DummyName    3

我尝试这样做的逻辑是:

步骤 1:更新每一行的 Count 列值

For Each row As DaTarow In tbl.Rows
    row("Count") = From r in tbl _
                   Group r By key = tbl.Columns("sites_siteid") into Group _
                   where Group.Count() > 1
                   Select Group.Count()
Next

但似乎我在搞乱 LINQ 或 ....

我需要在 VB.Net 中执行此操作,我知道如何在 sql 中执行此操作,但我正在努力在 Vb.Net 代码中完成此操作。 非常感谢任何帮助或见解。

提前致谢:)

解决方法

首先,创建一个 Dictionary 映射 sites_siteid 到具有相同 sites_siteid 的行数:

Dim countMap = (From r In tbl.Rows Group r By Key = r.Field(Of String)("sites_siteid") Into Group,Count() Select New With { .SiteId = Key,.Count = Group.Count }) _
                .ToDictionary(Function(ic) ic.SiteId,Function(ic) ic.Count)

然后,用所需的计数更新每一行:

For Each row As DataRow In tbl.Rows
    row("Count") = countMap(row.Field(Of String)("sites_siteid"))
Next

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。