我可以让它返回单列,但我似乎不知道如何让它给我整行而不只是列值。
它应该返回的字段是 VDMList 和 Table。
var duplicates = dt.AsEnumerable()
.Select(dr => dr.Field<string>("VMDList"))
.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToList();
columns of DT Table, VDMList
output is
4 | 02,2
12 | 03,3
15 | 02,2
以下查询将为具有重复
first
的行返回 group
中的 VMDList
项。请注意,选择 first
项目没有标准。它可以是任意 random
行。
var duplicates = dt.AsEnumerable()
.GroupBy(dr => dr.Field<string>("VMDList"))
.Where(g => g.Count() > 1)
.Select(g => g.First())
.ToList();
要返回所有具有重复项的行,请使用 SelectMany
var allDuplicates = dt.AsEnumerable()
.GroupBy(dr => dr.Field<string>("VMDList"))
.Where(g => g.Count() > 1)
.SelectMany(g => g)
.ToList();
如果要求是选择整行而不是选择列,则修改linq如下:
var duplicates = dt.AsEnumerable()
.Select(dr => dr.Field<string>("VMDList"))
.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g);
重复项将成为一组集合。