Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq c从datatable中选择整个重复行_C#_Linq - Fatal编程技术网

C# 使用linq c从datatable中选择整个重复行

C# 使用linq c从datatable中选择整个重复行,c#,linq,C#,Linq,我可以让它返回单个列,但我似乎不知道如何让它给我整个行,而不仅仅是列值 救命 它应该返回的字段是、VDMList和Table var duplicates = dt.AsEnumerable() .Select(dr => dr.Field<string>("VMDList")) .GroupBy(x => x) .Where(g => g.Count() > 1) .Select(g => g.Key) .ToL

我可以让它返回单个列,但我似乎不知道如何让它给我整个行,而不仅仅是列值

救命

它应该返回的字段是、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

如果要求选择整行而不是列,则按如下方式修改linq:

var duplicates = dt.AsEnumerable()
.Select(dr => dr.Field<string>("VMDList"))
.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g);

其中重复项将是组集合。

以下查询将返回组中具有重复VMDList的行的第一项。请注意,没有选择第一项的标准。它可以是任意随机行

要返回包含重复项的所有行,请使用


如果您显示了输出?您还可以显示表结构吗?整行->在什么条件下,某些值将错过DT table的列,VDMList输出为4 | 02,2 12 | 03,3 15 | 02,2我希望它返回所有重复的行,而不仅仅是第一行。您需要使用。更新了答案如果必须根据一组唯一的列找到重复项,我怎么做?@b.g查看此链接。
var duplicates = dt.AsEnumerable()
    .GroupBy(dr => dr.Field<string>("VMDList"))
    .Where(g => g.Count() > 1)
    .Select(g => g.First())
    .ToList();
var allDuplicates = dt.AsEnumerable()
    .GroupBy(dr => dr.Field<string>("VMDList"))
    .Where(g => g.Count() > 1)
    .SelectMany(g => g)
    .ToList();