【问题标题】:LINQ to compare item in one list to any item in anotherLINQ 将一个列表中的项目与另一个列表中的任何项目进行比较
【发布时间】:2012-03-03 07:19:19
【问题描述】:
我想知道,如果有人可以帮助我...
如果一个IList<> 中的任何项目包含在另一个IList<> 中,是否有一个返回布尔值的LINQ 查询。
这些IList<>'s 是对象,我需要比较对象的单个属性,在这种情况下是“名称”属性?
是否有可以执行此操作的 LINQ 查询?如果是这样,有人可以告诉我正确的实现吗?
谢谢
【问题讨论】:
标签:
linq
entity-framework
linq-to-entities
【解决方案1】:
你可以同时投影两个列表:
if (list1.Select(x => x.Name)
.Intersect(list2.Select(x => x.Name))
.Any())
这就是你所追求的吗?
【解决方案2】:
我认为应该这样做:
bool matchExists = list1.Any(a1 => list2.Any(a2 => a1.Name == a2.Name));
【解决方案3】:
另一种供您选择:
List1.Where(l => List2.Select(s => s.Name).Contains(l.Name)).Any();
【解决方案4】:
我通常像下面这样使用它:
List<UserInfo> userUpd = nd.Where(x => !rd.Any(y => y.Identifier.Equals(x.Identifier))).ToList();