Приводит ли вызов Select New к выполнению основного запроса? - PullRequest
0 голосов
/ 08 октября 2018

Если вы добавите .ToList () к запросу, это приведет к выполнению запроса к базе данных.Если вы используете Select New, это также сразу выполняет запрос или все еще позволяет изменять запрос перед выполнением?


При необходимости, вот пример:

var query = db.Cars();

if(model.CarNameSearch != "")
   query = query.where(u => u.CarName == model.CarNameSearch);

return query.ToList();

В приведенном выше примере запрос к базе данных фактически не выполняется до тех пор, пока не будет вызван .ToList ().

Если вместо этого я это сделаю, будет ли результат Выбрать новый в запросе, выполняемом довозврат:

var query = from cars in db.Cars
            select New MyResult{
                 MyModelCarName = cars.CarName,
                 MyModelCarColor= cars.Color
            };

if(model.CarNameSearch != "")
   query = query.where(u => u.MyModelCarName == model.CarNameSearch);

return query.ToList();

1 Ответ

0 голосов
/ 08 октября 2018

Использование new или не имеет значения здесь.Это метод LINQ.Синтаксис запроса from - select - Select() под прикрытием, и это один из методов с отложенным выполнением .

Таким образом, второй фрагмент кода является совершенно правильным способом составления запроса.выражение с отложенным выполнением, которое будет выполнено не раньше, чем ToList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...