[英]Copy distinct id's to a list
我有4个列表,像这样:
List <Emp> l1 = new List<Emp>();
List <Emp> l2 = new List<Emp>();
List <Emp> l3 = new List<Emp>();
List <Emp> l4 = new List<Emp>();
Emp
有一个名为id
的属性,如何获得所有四个列表中所有不同id的列表?
你需要MoreLinq为DistinctBy:
IEnumrable<Emp> uniqueEmps = l1.Concat(l2).Concat(l3).Concat(l4)
.DistinctBy(e => e.id);
对于Id的:
IEnumrable<int> uniqueIds = l1.Concat(l2).Concat(l3).Concat(l4)
.Select(e => e.id).Distinct();
如何获得所有四个列表中所有不同ID的列表?
如果要查找ID列表(而不是具有这些ID的Emp
对象),可以使用简单查询来完成:
var ids = l1.Concat(l2).Concat(l3).Concat(l4).Select(e => e.Id).Distinct();
如果你的emp类实现了相等比较,那么你可以将列表组合在一起:
IEnumrable<int> uniqueIds = l1.Union(l2).Union(l3).Union(l4).Select(e => e.id);
要在类中实现相等性,只需重写Equals
和GetHashCode
:
public override bool Equals(object obj)
{
var compareTo = obj as Emp;
return Id.Equals(CompareTo.Id);
}
public override int GetHashCode()
{
return Id.GetHashCode();
}
这样做的好处是,无论您需要比较两个emp
实例,它都会利用此实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.