Существует, конечно, простой способ написания того же кода:
var foo = ids.Select(id => db.GetBarById(id))
.ToList();
Однако это зависит от того, что на самом деле делает db.GetBarById
.Если вы можете использовать ids
в своем запросе, вы можете сделать все это в одном запросе к базе данных:
var foo = db.Bars
.Where(b => ids.Contains(b.Id))
.ToList();
Очевидно, что это не использует ваш существующий запрос LINQ, хотя - если есть более сложныепри извлечении одной строки вам, возможно, потребуется проделать немного больше работы.
РЕДАКТИРОВАТЬ: Хорошо, теперь у нас есть единственный метод, он довольно прост ... хотя вам, вероятно, следует использовать соединение,честно говоря ... и я подозреваю, что ваш реальный код имеет w.Barid == ID
, а не w.Barid = ID
.
var foo = db.Bar
.Where(w => ids.Contains(w.Barid))
.SelectMany(b => Othertable.Where(w => w.barid == b.id),
(b, x) => new Bar { ID = s.id, Name = s.name,
Age = s.age, Blah = x.blah })
.ToList();