假设我有一个列表List<MyObject> myObjectList。MyObject对象有一个名为Order的属性,其类型为int。如何使用LINQ-to-objects确定myObjectList中的两个或多个对象是否具有相同的Order?
发布于 2010-01-29 22:38:40
首先GroupBy MyObject.Order,然后确定组的Any是否有多个成员:
bool b = myObjectList.GroupBy(x => x.Order)
.Any(g => g.Count() > 1);
// b is true is there are at least two objects with the same Order
// b is false otherwise发布于 2010-01-29 23:19:16
bool hasDuplicates = myObjectList.Count >
new HashSet<int>(myObjectList.Select(x => x.Order)).Count;发布于 2010-01-29 22:49:19
不是一个纯粹的Linq-To-Objects解决方案,但是如何:
var ordersList = new List<Order>(myObjectList.Select(obj => obj.Order);
bool allUnique = ordersList.Count == new HashSet<Order>(ordersList).Count;我们必须测试这里提出的所有方法的性能。我会小心的,否则你很快就会以一些缓慢的O(n²)查找结束。
https://stackoverflow.com/questions/2162545
复制相似问题