从列表中获取所有无效LINQ

fivyi3re  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(148)

我有两个列表,我有一个要比较的属性。基于这个属性,我想返回list 1中所有不在list 2中的元素。
列表1:{姓名、年龄、身份证}

{John, 10, 1},
{Joe, 20, 2},
{Mary, 30, 3}

列表2:{姓名、年龄、身份证}

{John, 10, 1}
{Joe, 20, 2}
{Mary, 30, 5}

这应该只从列表1返回

{Mary, 30, 3}

我试过了

var invalidElements = list1
                .Select(o => list2.Any(p => p.Id != o.Id))
                .ToList();
ohfgkhjo

ohfgkhjo1#

使用Where方法而不是select(并反转逻辑)。Select用于将集合投影到另一个不同类型的集合(通常是元素的属性)。

var invalidElements = list1
                .Where(o => !list2.Any(p => p.Id == o.Id))
                .ToList();
4c8rllxm

4c8rllxm2#

因为您编写了要按ID筛选的代码,所以可以使用新的ExceptBy方法:

var invalidElements = list1.ExceptBy(list2.Select(a => a.Id), x => x.Id);

相关问题