111,109
社区成员




public class Data
{
public string Name { get; set; }
public override int GetHashCode() => Name.GetHashCode();
public override bool Equals(object obj) => (obj is Data n && n.Name == Name);
}
完全就可以用一句linq来满足你的需求,重写GetHashcode和Equals又有什么关系呢?
list1.Except(list2)
var lstq = list1.Union(list2); // 并集
var result = lstq.Distinct(); // 去重
不过这样就没有Linq的事了
public class Data
{
public string Name { get; set; }
public override int GetHashCode() => Name.GetHashCode();
public override bool Equals(object obj) => (obj is Data n && n.Name == Name);
}
完全就可以用一句linq来满足你的需求,重写GetHashcode和Equals又有什么关系呢?
list1.Except(list2)
[/quote]
抱歉没说明白,2个List根据Name去重,其他字段值是不一样的
//合并+去重
list1.Concat(list2).Distinct().ToList();
//交集
list1.Intersect(list2).ToList();
//差集,去除list1中同list2的element
list1.Except(list2).ToList();