属性 合并两个列表
Union two list by property
我想合并两个不重复的列表。它应该只有一个 属性.
我有一个 class:
public class Test
{
public int Id { get; set; }
public string Prop { get; set; }
public string Type { get; set; }
}
我有两个列表,我想按类型合并,不重复。因此,首先我想从列表 1 中获取所有内容,然后在列表 1 中不存在 Type 时从列表 2 中获取所有内容。
我试过联合
您必须使用 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();
使用 .NET 6 或更高版本,您可以使用 UnionBy() 方法,该方法将通过 属性 :
合并 2 个不包括重复项的列表
var mergedLists = firstList.UnionBy(secondList, u => u.property).ToList();
更多信息:Microsoft doc
我想合并两个不重复的列表。它应该只有一个 属性.
我有一个 class:
public class Test
{
public int Id { get; set; }
public string Prop { get; set; }
public string Type { get; set; }
}
我有两个列表,我想按类型合并,不重复。因此,首先我想从列表 1 中获取所有内容,然后在列表 1 中不存在 Type 时从列表 2 中获取所有内容。
我试过联合
您必须使用 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();
使用 .NET 6 或更高版本,您可以使用 UnionBy() 方法,该方法将通过 属性 :
合并 2 个不包括重复项的列表var mergedLists = firstList.UnionBy(secondList, u => u.property).ToList();
更多信息:Microsoft doc