Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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#_.net_Asp.net_Linq_.net 4.0 - Fatal编程技术网

C# 使用LinQ将一个数据表的重复行复制到另一个数据表

C# 使用LinQ将一个数据表的重复行复制到另一个数据表,c#,.net,asp.net,linq,.net-4.0,C#,.net,Asp.net,Linq,.net 4.0,是否有任何方法可以将源数据表中的重复行(基于一列或多列)复制到目标数据表(使用或不使用C#中的LINQ)?编写您目前拥有的代码可以更容易地收集意图 如果使用LINQ,则需要使用group运算符,或者使用LINQ扩展和GroupBy()方法,尽管它会提供键列表 比如: 如果没有LINQ,只需使用HashSet作为内存,并做一个简单的检查,如果它在HashSet中,那么您以前见过它,然后只需添加到辅助表中,如果没有,那么将它添加到HashSet中,因为这是您第一次看到此元素。。即使是VB.NET,也

是否有任何方法可以将源数据表中的重复行(基于一列或多列)复制到目标数据表(使用或不使用C#中的LINQ)?

编写您目前拥有的代码可以更容易地收集意图

如果使用LINQ,则需要使用group运算符,或者使用LINQ扩展和GroupBy()方法,尽管它会提供键列表

比如:

如果没有LINQ,只需使用
HashSet
作为内存,并做一个简单的检查,如果它在HashSet中,那么您以前见过它,然后只需添加到辅助表中,如果没有,那么将它添加到HashSet中,因为这是您第一次看到此元素。

。即使是VB.NET,也可能会发现以下内容很有用:

Dim dups = From row In source
      Group By grp = New With {Key .Value1 = CInt(row("Value1")), Key .Value2 = CInt(row("Value2"))}
      Into Group Where Group.Count > 1
      Let Text = Group.First.Item("Text")
      Select Group.First

If dups.Any Then
      Dim dest = dups.CopyToDataTable
End If
为了获得包含重复行的新数据表,将其他列添加到查询中时,
Let
-关键字很重要。

Hie 要使用LINQ查找重复记录,必须执行类似的操作

int[] listOfItems = new[] { 4, 2, 3, 1, 6, 4, 3 };
var duplicates = listOfItems
.GroupBy(i => i)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (var d in duplicates)
Console.WriteLine(d);

您应该解释您的问题,并描述到目前为止您拥有的代码。否则,唯一的答案是:是。@caspar我想要C#的源代码作为我的问题…供将来参考:要求别人从头开始为你编写代码,通常不会受到热烈的欢迎。
int[] listOfItems = new[] { 4, 2, 3, 1, 6, 4, 3 };
var duplicates = listOfItems
.GroupBy(i => i)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (var d in duplicates)
Console.WriteLine(d);