vb.net datatable asenumerable 获取不同的值并按重复行计数组
Posted
技术标签:
【中文标题】vb.net datatable asenumerable 获取不同的值并按重复行计数组【英文标题】:vb.net datatable asenumerble get distinct vlues and count grouped duplicate rows 【发布时间】:2021-09-23 18:14:05 【问题描述】:我有一个名为 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但无法正常工作,请帮助
【问题讨论】:
“不工作”不足以诊断问题。请提供有关编译器错误或运行时故障的更多详细信息。另外,请提供 MCVE。 【参考方案1】: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")vbTabrow("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")vbTabrow("Year")vbTabrow("Multi")")
Next
客户 |年 AAA 2012 BBB 2011 AAA 2012 BBB 2011 BBB 2011 BBB 2012 客户 |年份 |多 AAA 2012 2 BBB 2011 3 BBB 2012 1
【讨论】:
以上是关于vb.net datatable asenumerable 获取不同的值并按重复行计数组的主要内容,如果未能解决你的问题,请参考以下文章
检查 VB.net 的 DataTable 中是不是存在值的最简单/最快的方法?
如何在 VB.NET 中更新 DataTable 中的一行?
VB.net 中 ,datalist.datasource 转换成datatable,如何转?
在 vb.net 中选择 Case vs Datatable.findrow 性能
vb.net datatable asenumerable 获取不同的值并按重复行计数组
Datatable 正在从我为 Windows 10 构建的 VB.NET 应用程序中的 SQL 查询结果中接收 (01\dd\yyyy) 格式的日期