Есть ли способ добавить или удалить строку запроса LINQ to DB, основываясь на том, что проверяемое значение равно нулю? - PullRequest
2 голосов
/ 29 марта 2010

Если у меня есть такой запрос:

String Category = HttpContext.Current.Request.QueryString["Product"].ToString();

IQueryable<ItemFile> pressReleases = from file in connection.ItemFile
                                                           where file.Type_ID == 8
                                                                && file.Category == Category 
                                                           select file;

Есть ли способ сделать этот запрос LINQ, чтобы я не использовал строку file.Category == Category, если категория пуста или пуста?

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

Как насчет того, чтобы не добавлять это where, если вам не нужно?

IQueryable<ItemFile> pressReleases = from file in connection.ItemFile
                                     where file.Type_ID == 8
                                     select file;

if(!string.IsNullOrEmpty(Category)) {
    pressReleases = pressReleases.Where(file => file.Category == Category);
}

Это работает, потому что запросы LINQ компонуются с отложенным выполнением, поэтому этот фильтр все еще является частью окончательного TSQL.

2 голосов
/ 29 марта 2010

Возможно, это не совсем то, что вы хотели, но вы получите тот же результат:

String Category = HttpContext.Current.Request.QueryString["Product"].ToString();

IQueryable<ItemFile> pressReleases = from file in connection.ItemFile
                                     where file.Type_ID == 8
                                     && (string.IsNullOrEmpty(Category) || file.Category == Category)
                                     select file;
...