联盟两个属性列表

时间:2016-04-07 09:56:57

标签: c# .net linq list ienumerable

我想合并两个没有重复的列表。它应该只由一个属性区分。

我有一个班级:

public class Test
{
    public int Id { get; set; }
    public string Prop { get; set; }
    public string Type { get; set; }
}

我有两个列表,我希望合并而不是重复类型。首先,我想从列表1中获取所有内容,然后在列表1中不存在类型时从列表2中获取所有内容。

我已经尝试过工会了。

1 个答案:

答案 0 :(得分:3)

您已使用IEqualityComparer。见:https://msdn.microsoft.com/en-us/library/ms132151%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

class Compare : IEqualityComparer<Test>
{
    public bool Equals(Test x, Test y)
    {
        return x.Id == y.Id;
    }
    public int GetHashCode(Test codeh)
    {
        return codeh.Id.GetHashCode();
    }
}

然后使用

var union = list1.Union(list2).Distinct(new Compare()).ToList();