首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据某个属性判断列表中的两个或多个对象是否相等

根据某个属性判断列表中的两个或多个对象是否相等
EN

Stack Overflow用户
提问于 2010-01-29 22:33:47
回答 5查看 481关注 0票数 3

假设我有一个列表List<MyObject> myObjectListMyObject对象有一个名为Order的属性,其类型为int。如何使用LINQ-to-objects确定myObjectList中的两个或多个对象是否具有相同的Order

EN

回答 5

Stack Overflow用户

发布于 2010-01-29 22:38:40

首先GroupBy MyObject.Order,然后确定组的Any是否有多个成员:

代码语言:javascript
复制
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
票数 11
EN

Stack Overflow用户

发布于 2010-01-29 23:19:16

代码语言:javascript
复制
bool hasDuplicates = myObjectList.Count >
    new HashSet<int>(myObjectList.Select(x => x.Order)).Count;
票数 2
EN

Stack Overflow用户

发布于 2010-01-29 22:49:19

不是一个纯粹的Linq-To-Objects解决方案,但是如何:

代码语言:javascript
复制
var ordersList = new List<Order>(myObjectList.Select(obj => obj.Order);
bool allUnique = ordersList.Count == new HashSet<Order>(ordersList).Count;

我们必须测试这里提出的所有方法的性能。我会小心的,否则你很快就会以一些缓慢的O(n²)查找结束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2162545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档