我在基于名称,日期和类别的表格中查找重复项都是相同的。我想要结果集中的两个(或全部)重复行。我使用VS 2008和.net 3.5。我从强类型表中的数据开始,并希望最终只能在同一个表或表的副本中使用重复项。我使用数据表作为报告的来源。
我花了很多时间查看类似的问题,但没有找到答案。
Dim LList as PmtDataTable = PmtList.GroupBy(x => New {x.Name, x.PmtDate, x.Category}) _
.Where(x => x.Count() > 1) _
.select(x => New {x.key, Values = x.tolist()})
我从https://stackoverflow.com/a/15747265/2559297获得了语法,但由于我使用旧的VS它不适合我。你能用.net 3.5将其翻译成VS 2008吗?
答案 0 :(得分:1)
您错过了关键字键
你错过了C#
和VB.NET
:)(我是C#开发人员)。
试试这个:
Dim query = PmtList.GroupBy(Function(x) New With {Key .Name = x.Name, Key .PmtDate = x.PmtDate, Key .Category = x.Category}) _
.Where(Function(x) x.Count() > 1) _
.Select(Function(x) New With {.KeyName = x.key, .Count= x.Count()})
答案 1 :(得分:0)
@Tim.Tang的答案很接近。但我需要它反馈给PmtDataTable。因此改变了他的Select语句以返回组。然后我获取行并将数据添加到新数据表。
Dim dupList = PmtList.GroupBy(Function(x) New With {Key .Name = x.Name, _
Key .PmtDate = x.PmtDate, _
Key .Category = x.Category}) _
.Where(Function(y) y.Count() > 1) _
.SelectMany(Function(grp) grp)
Dim PmtList2 As New PmtDataTable
For Each rw as PmtRow In dupList
Dim iRow As PmtRow
iRow = PmtList2.NewPmtRow
iRow.ItemArray = rw.ItemArray
PmtList2.AddPmtRow(iRow)
Next