Сложив, где условия с лямбда-выражениями - PullRequest
0 голосов
/ 16 ноября 2018

Как правило, мы добавляем несколько условий в выражение Where, разделяя их && (||).

Предположим, если я сложу несколько, когда условия будут иметь какую-либо разницу в производительности?

Например:

Эта строка

dbContext.Students.Where(s=> s.Section = 5 && s.Marks >50).ToList();

Похожа на

dbContext.Students.Where(s=>s.Section = 5).Where(s=>s.Marks > 50).ToList();

Примечание: над строкой возможно, поскольку Where возвращает IQueryable, для которого inturn имеет Where.

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Я думаю, что используя '&&' и '||' операторы вместо нескольких предложений по существу приводят к 1 перечислению по всей коллекции один раз. Множественные предложения «Где» означают, что вы будете перечислять всю коллекцию, а затем результаты, которые снова могут быть полной коллекцией.

0 голосов
/ 16 ноября 2018

Я бы предложил использовать оператор «&&». Потому что его фильтр записей в один момент даже использовал несколько условий.Но если вы используете несколько операторов where, это определенно влияет на производительность, потому что сколько раз вы использовали оператор where, он попадает в запрос для фильтрации.

0 голосов
/ 16 ноября 2018

Время, когда ваш оператор достигает БД, - это когда вызывается .ToList(). Следовательно, то, что вы делаете до этого, не создаст большого различия на практике

Однако, с точки зрения чисто математического исполнения, должно быть некоторое различие, связанное с процессом перевода, идущим за ними. Что можно понять по эксперименту, как подсказывает @sujith karivelil, или по некоторым глубоким прочтениям.

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