Использование IEnumerable в качестве параметра контроллера в запросе к базе данныхC#

Место общения программистов C#
Ответить
Anonymous
 Использование IEnumerable в качестве параметра контроллера в запросе к базе данных

Сообщение Anonymous »

Мы используем linq2db. Я думаю, что при создании SQL-запроса он будет дважды перечислять идентификаторы, потому что идентификаторы — это IEnumerable. Прав ли я, что перечисление этих идентификаторов будет дважды, а SQL-запрос будет выполнен один раз?
Я не уверен, как я могу это проверить и попытаться узнать, перечисляет ли он дважды. Скажите, пожалуйста, сколько раз будут перечисляться идентификаторы.
Прочитав этот ответ (возможно, я неправильно понял ответ), я считаю, что SQL-запрос будет выполнен один раз и ids< /code> будет перечисляться дважды?
[HttpGet]
[Route("persons")]
public async Task GetAvailableAsync(IEnumerable ids)
{
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();

return await query.ToListAsync()
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... base-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»