![](/img/trans.png)
[英]How to check if in a list of Objects with two properties, all Objects with one equal property also have the same other property?
[英]Determine whether two or more objects in a list are equal according to some property
假设我有一个列表List<MyObject> myObjectList
。 MyObject
对象有一个名为Order
的属性,其类型为int
。 如何使用LINQ-to-objects确定myObjectList
中的两个或多个对象是否具有相同的Order
?
bool hasDuplicates = myObjectList.Count >
new HashSet<int>(myObjectList.Select(x => x.Order)).Count;
不是纯粹的Linq-To-Objects-Solution,但如何:
var ordersList = new List<Order>(myObjectList.Select(obj => obj.Order);
bool allUnique = ordersList.Count == new HashSet<Order>(ordersList).Count;
人们必须测试这里提出的所有方法的性能。 我要小心,否则你会很快找到一些缓慢的O(n²)查找。
Distinct
怎么样?
bool allUnique = ordersList.Count == ordersList.Select(o => o.Order).Distinct().Count()
Count()
方法采用谓词,所以你会做这样的事情:
if(myObjectList.Count(x => x.Order == 1) >= 2)
{
// Do something
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.