c# - 合并两个 List<T> 并使用 EF 过滤掉重复项

标签 c# entity-framework union

我有两个 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/

相关文章:

c# - 如何将同一列添加到 EF Core 中的所有实体?

mysql - 将多个 mysql 查询合并为 1 个输出

c# - Application Insights 将用户名添加到遥测

c# - 使用派生类类型作为基类泛型操作的参数

entity-framework - 删除记录 Entity Framework

mysql - 合并两个表的结果

MySQL 只获取一列一次

c# - 反转 .wav 文件

c# - 无法终止进程 : "No process is associated with this object" error

c# - 如何使用 Entity Framework 使用外键保存新记录?