【发布时间】:2019-09-14 09:05:17
【问题描述】:
有 2 个大型对象列表,我需要在其中执行 where 子句并找到匹配的记录。
List<A> a= ...;
List<A> b = ...;
模型
身份证
名字
年龄
地址
与List比较后,我需要返回一个包含List所有对象的列表。
我应该检查的属性是:Ids 是否相等,Names 是否相等,ages 是否相等。
List<A> common = a.Where(n => b.Select(o => o.Id).Contains(n.Id))
.Where(n => b.Select(o => o.Name).Contains(n.Name))
.Where(n => b.Select(o => o.Age).Contains(n.Age))
这应该有问题,因为它返回一个Null。
【问题讨论】:
-
如果你只想要比较后的匹配项,你应该使用
IntersectLINQ方法。您还想只比较对象的少数属性,因此您应该编写和实现 IComparer 接口并在 Intersect 方法中使用它。 stackoverflow.com/questions/4340273/… -
你没有尝试加入吗??
-
@UdaraKasun 我有多个条件可以加入工作吗?新手。