Как преобразовать выражение Foreach в выражение linq?

как преобразовать ниже foreach в выражение linq?

var list = new List<Book>();

foreach (var id in ids)
{
    list.Add(new Book{Id=id});
}

Ответ 1

Это довольно прямолинейно:

var list = ids.Select(id => new Book { Id = id }).ToList();

Или, если вы предпочитаете синтаксис запроса:

var list = (from id in ids select new Book { Id = id }).ToList();

Также обратите внимание, что ToList() необходимо, только если вам действительно нужно List<Book>. В противном случае, как правило, лучше использовать возможности Linq lazy для оценки и разрешать объекты объектов Book создавать только по требованию.

Ответ 2

var list = ids.Select(id => new Book(id)).ToList();