Вы можете сделать это, используя вложенный запрос, но он довольно неэффективен с O(n²)
.
var result = order.Select(o => foos.Single(f => f.Id == o));
Если 'order' может содержать идентификаторы, отсутствующие в 'foos', вы должны использовать SingleOrDefault()
. Если foos
может содержать повторяющиеся идентификаторы, вы должны использовать First()
или FirstOrDefault()
.
var result = order
.Select(o => foos.FirstOrDefault(f => f.Id == o))
.Select(f => f != null);
Может быть, даже объединение будет работать, но я не уверен, сохранит ли он порядок.
var result = Enumerable.Join(order, foos, o => o, f => f.Id, (o, f) => f);
Как упоминал Джон, объединение будет работать корректно, только если вход правильно сформирован так же, как того требует мое первое предложение.