vb.net - vb.net datatable asenumerble 获取不同的 vlues 并计算分组的重复行
问题描述
我有一个名为 dtDealer 的数据表,其中有 2 列名为 Customer,Year。我正在尝试创建一个名为 dtdistinct 的新数据表,其中有一个名为 multi 的额外列,它显示重复行数的计数......
dt经销商
客户 | 年
AAA 2012
BBB 2011
AAA 2012
BBB 2011
BBB 2011
BBB 2012
dtmulti
客户 | 年份 | 多
AAA 2012 2
BBB 2011 3
BBB 2012 1
尝试了asenumerable但无法正常工作请帮助
解决方案
AsEnumerable 确实有效。我怀疑你在分组时遇到了问题。我按元组分组
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
推荐阅读
- c++ - 从 C++ 代码通过 PQsendQuery 执行 sql 时 Postgres SQL 解析错误 - SQLState:42601 消息:在“”或附近出现语法错误
- mysql - 如何在单个语句中使用 AND 和 OR
- excel - 批量修改条目电子表格 - excel libreoffice calc
- reactjs - preload.ts 中的 contextBridge.exposeInMainWorld:ipcRenderer 接收到来自 main.ts 的消息,但渲染器没有得到它
- javascript - 根据“喜欢”状态更改 SVG 图标颜色
- c++ - 与 const_cast 相反
- sabre - 如何修复“服务提供者调用失败”错误?
- excel - 更改分组文本框的文本
- php - 如何通过 CHAT-API 向 whats 应用组发送消息
- javascript - 从数组中删除 ObjectId - MongoDB、Mongoose