我有一个名为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
已尝试使用枚举,但不起作用,请帮助
发布于 2021-09-23 19:14:34
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
https://stackoverflow.com/questions/69305047
复制相似问题