gpt4 book ai didi

c# - 使用 LINQ 查找重复的行(带有指定列的列表)

转载 作者:行者123 更新时间:2023-11-30 12:11:35 25 4
gpt4 key购买 nike

我使用下面的代码获取 3 列的重复行:String、Date、Money。我想知道是否有任何通用方法可以在此 LINQ 中输入列名的动态列表来查找重复的行?

DataTable allDuplicates = dt.AsEnumerable()
.GroupBy(dr => new
{
Field1 = dr.Field<object>("String"),
Field2 = dr.Field<object>("Date"),
Field3 = dr.Field<object>("Money"),
})
.Where(g => g.Count() > 1)
.SelectMany(g => g)
.ToList().CopyToDataTable();
}

最佳答案

定制一个怎么样ArrayEqualityComparer<T>输入(例如 listed here ):

string[] colsToConsider = ...

var allDuplicates = dt.AsEnumerable()
.GroupBy(dr => colsToConsider.Select(dr.Field<object>)
.ToArray(),
new ArrayEqualityComparer<object>())
.Where(g => g.Count() > 1)
.SelectMany(g => g)
.CopyToDataTable();

您也可以考虑使用 Dictionary<TKey, TValue> (以及相关的字典比较器)如果你发现这里隐式使用数组索引是老掉牙的。

关于c# - 使用 LINQ 查找重复的行(带有指定列的列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com