Мы используем linq2db. Я считаю, что этот IQueryable будет выполнен в базе данных один раз. Но я не уверен, правда ли это, из-за предупреждения Resharper
в котором говорится «Возможно множественное перечисление».
Мой запрос linq2db выглядит следующим образом:
Код: Выделить всё
IEnumerable ids = Enumerable.Range(1, 10)
.Select(x => {Console.WriteLine(x); return x;});
IQueryable
query =
from person in dbContext.GetTable()
where ids.Contains(person.Id) // here warning `Possible Multiple enumeration`
|| ids.Contains(person.DepartmentId) // here warning `Possible Multiple
// enumeration`
select
new PersonDto
{
Name = person.Name,
Id = person.Id,
DepartmentId = person.DepartmentId
}).Distinct();
await query.ToListAsync()
Подробнее здесь: https://stackoverflow.com/questions/792 ... materializ