Linq选择同时存在于两个列表中的项

bjg7j2ky  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(167)

我有两个清单:

myObject object1 = new myObject(id = 1, title = "object1"};
myObject object2 = new myObject(id = 2, title = "object2"};
myObject object3 = new myObject(id = 3, title = "object3"};

//List 1
List<myObject> myObjectList = new List<myObject>{object1, object2, object3};

//List 2
List<int> idList = new List<int>{2, 3};

是否有一种方法可以使用Linq只提取第一个列表中存在于第二个列表中的对象,这样我就可以:

{object2, object3}

我查看了intersect,但似乎只有当两个列表是相同类型时,这才有效。
如有任何帮助,我们将不胜感激。

  • 谢谢-谢谢
3b6akqbq

3b6akqbq1#

LINQ解决方案:

myObjectList = myObjectList.Where(X => idList.Contains(X.id)).ToList();
jv2fixgn

jv2fixgn2#

IEnumerable<myObject> matches = myObjectList.Join(
    idList,
    o => o.Id,
    id => id,
    (o, id) => o);
vojdkbi0

vojdkbi03#

.Net 6的官方LINQ解决方案是IntersectBy

var matches = myObjectList.IntersectBy(idList, o => o.Id);

相关问题