Это должно сделать это:
// Assume objList is IEnumerable<MyObject> and intList is IEnumerable<int>.
IEnumerable<MyObject> intersection =
from obj in objList
join i in intList on obj.Id equals i
select obj
Имейте в виду, если несколько объектов имеют одинаковый идентификатор или идентификатор указан в списке несколько раз, и один объект соответствует ему, объект будет отображаться более одного раза в результирующем списке.
Я думаю, что группа лучше для больших списков, так как некоторые другие решения будут многократно повторять списки для поиска соответствующего объекта.