Условие Linq Условие Где - PullRequest
       15

Условие Linq Условие Где

5 голосов
/ 26 октября 2009

При поиске условия условного оператора linq я нашел эту статью , способ их использования подобен ниже:

var logs = from log in context.Logs
           select log;

if (filterBySeverity)
    logs = logs.Where(p => p.Severity == severity);

if (filterByUser)
    logs = logs.Where(p => p.User == user);

но мне было интересно, эффективен ли этот метод? Сколько запросов выполнит linq?

Ответы [ 2 ]

5 голосов
/ 26 октября 2009

Да, я думаю, что это эффективно. Этот код на самом деле не будет выполнять запросы, потому что он не пытается что-либо прочитать из «журналов». Когда это происходит, он должен учитывать оба условия в одном и том же запросе (т. Е. Предложение WHERE, которое включает оба условия).

НО, если вы используете LINQ и беспокоитесь об эффективности, вам действительно нужно проверять все, что вы пишете, используя инструменты, чтобы посмотреть, какие запросы на самом деле выполняются. Вы можете сделать это с помощью SQL Server Profiler.

2 голосов
/ 26 октября 2009

Вы можете использовать динамический LINQ ( Статья Скотту )

Таким образом, вы можете легко создать предложение where в строке и затем передать его методу Where:

public string GetWhereClause()
{
string whereClause = "";
....
return whereClause
}

var logs = context.Logs.Where( GetWhereClause() );

Надеюсь, это поможет;)

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