我是 Linq 的新手,我正在尝试根据一个字段从两个列表中过滤记录。每个列表都有一个 ID,我想获取 ID 出现在一个列表中而不是另一个列表中的任何记录。我只需要一个 ID 列表就可以做到这一点,如下所示:
List1 = _class1.getList1();
List2 = _class2.getList2();
(出于介绍目的,我正在使用一个我想摆脱的类,它有一个数据列表和一个只有 ID 的列表,我应该能够只用数据列表来做到这一点,尽管在两个语句中比较list1 到 list2,反之亦然)
var inList1ButNot2 = List1.IDList.Except(List2.IDList);
var inList2ButNot1 = List2.IDList.Except(List1.IDList);
我遇到麻烦的地方是使用数据列表来比较第二个列表的 ID 字段。我相信它应该是这样的:
var inList1ButNot2 = DataList1.Select(x => x.ID)
.Except(DataList2.Select(y => y.ID));
问题是我没有得到整个记录只是我正在比较的字段,我是否需要在之后单独选择每个字段,或者如果 ID 出现在一个列表中但没有出现在语句中,是否有办法选择记录另一个?