首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >vb.net数据表可枚举获取distinct值并计算分组的重复行

vb.net数据表可枚举获取distinct值并计算分组的重复行
EN

Stack Overflow用户
提问于 2021-09-23 18:14:05
回答 1查看 54关注 0票数 0

我有一个名为dtDealer的数据表,它有两个列,分别名为Customer和Year。我正在尝试创建一个新的数据表,它的名称为dtdistinct,它有一个额外的列,名为multi,它显示重复行数的计数……

dtDealer

客户|年份

AAA 2012

BBB 2011

AAA 2012

BBB 2011

BBB 2011

BBB 2012

dtmulti

客户|年份|多年

AAA 2012 2

BBB 2011 3

BBB 2012 1

已尝试使用枚举,但不起作用,请帮助

EN

回答 1

Stack Overflow用户

发布于 2021-09-23 19:14:34

AsEnumerable可以正常工作。我怀疑你对分组有问题。我按一个元组分组

代码语言:javascript
运行
复制
Dim dealers = {(Customer:= "AAA", Year:= 2012),
               (Customer:= "BBB", Year:= 2011),
               (Customer:= "AAA", Year:= 2012),
               (Customer:= "BBB", Year:= 2011),
               (Customer:= "BBB", Year:= 2011),
               (Customer:= "BBB", Year:= 2012)}
Dim dtDealer As New DataTable()
dtDealer.Columns.Add("Customer")
dtDealer.Columns.Add("Year")
For Each dealer In dealers
    Dim row = dtDealer.NewRow()
    row("Customer") = dealer.Customer
    row("Year") = dealer.Year
    dtDealer.Rows.Add(row)
Next

Console.WriteLine($"Customer | Year")
For Each row In dtDealer.AsEnumerable
    Console.WriteLine($"{row("Customer")}{vbTab}{row("Year")}")
Next

Dim dtMulti As New DataTable()
dtMulti.Columns.Add("Customer")
dtMulti.Columns.Add("Year")
dtMulti.Columns.Add("Multi")

dtMulti = dtDealer.AsEnumerable().
          GroupBy(Function(dealer) (dealer("Customer"), dealer("Year"))).
          Select(Function(g)
                     Dim newRow = dtMulti.NewRow()
                     newRow("Customer") = g.First.Item("Customer")
                     newRow("Year") = g.First.Item("Year")
                     newRow("Multi") = g.Count()
                     Return newRow
                 End Function).
          CopyToDataTable()

Console.WriteLine($"Customer | Year | Multi")
For Each row In dtMulti.AsEnumerable
    Console.WriteLine($"{row("Customer")}{vbTab}{row("Year")}{vbTab}{row("Multi")}")
Next

客户|年份

AAA 2012

BBB 2011

AAA 2012

BBB 2011

BBB 2011

BBB 2012

客户|年份|多年

AAA 2012 2

BBB 2011 3

BBB 2012 1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69305047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档