有没有办法将源数据表中的副本(基于一列或多列)行复制到目标数据表中,在C#中是否包含LINQ?
答案 0 :(得分:0)
写出你目前使用的代码可以更容易收集意图。
如果您使用LINQ,您希望使用组运算符,或使用LINQ扩展和GroupBy()方法,尽管它会为您提供密钥列表。
像:
from row in yourDataTable.AsEnumerable()
group row by new { c1 = yourDataTabe["col1"], c2 = yourDataTable["col2"], //etc, your keyed columns } into groupedRow
where groupedRow.Count() > 1
select new
{
//output whatever anonymous type information you want
}
没有LINQ只需使用HashSet<T>
作为内存,并做一个简单的检查,如果它在HashSet中,那么你以前看过它,然后只是添加到你的辅助表,如果没有,然后添加它是HashSet,因为它是你第一次看到这个元素。
答案 1 :(得分:0)
我asked same myself yesterday。也许你会发现以下有用,即使它是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
- 关键字对于将其他列添加到查询中以获取具有重复行的新DataTable非常重要。
答案 2 :(得分:0)
枝 您必须执行类似的操作才能使用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);