我有两个 List<T>
具有相同 T
的对象来自两个不同数据源的对象,并希望合并这两个 List<T>
对象合二为一List<T>
对象并过滤掉重复项。
public class MyClass
{
public int ID { get; set; }
public string Name { get; set; }
}
public List<MyClass> MyMethod(List<MyClass> ListA, List<MyClass> ListB)
{
//would like to union ListA and ListB and filter out any duplicates by ID from ListB that are in ListA
}
最佳答案
我会使用 this answer由 Jon skeet 删除重复项。
public static IEnumerable<TSource> DistinctBy<TSource, TKey>
(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
然后
public List<MyClass> MyMethod(List<MyClass> ListA, List<MyClass> ListB)
{
return ListA.Union(ListB).DistinctBy(x => x.ID).ToList();
}
关于c# - 合并两个 List<T> 并使用 EF 过滤掉重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270528/