2015-01-19 6 views
0

Как пропустить оператор where, если типичное значение имеет значение null в LINQ? Это функция поиска, в которой пользовательское значение ввода, отличное от LINQ, не будет выполнять запрос в этом столбце.Функция поиска linq skip where where where null?

Я помню, что я видел прямую функциональность для этого, но я забыл о том, что такое предложение. в приведенном примере не требуется явно проверять значение null для каждого оператора where.

Нечто подобное. но я забыл, какая функция должна быть заменена для предложения where. WhereIf? WhereIff?

db.Table1.Where(x=> x.Column1 == value1) 
      .Where(x => x.Column2 == value2) 

ответ

1

Куда бы это сделать. Посмотрите здесь:

Это должно помочь вам: http://extensionmethod.net/csharp/ienumerable-t/whereif

также посмотреть на этот ответ: How to use whereif in LINQ

Изменить свой DataTable в IQueryable:.

db.Table1.AsEnumerable() AsQueryable () ...

+0

Я. Я думал whereif но IntelliSense не показывает мне whereif. это whereif предложение - это то, что пользователь расширяет самостоятельно или это linq для sql или linq для объекта? – desmondlee

0

Если есть условие, которое вы не хотели бы применять фильтр по запросу, отправленному в базу данных, то не вызывайте Where on it.

var query = db.Table1.AsQueryable(); 
if (value1 != null) 
    query = query.Where(x=> x.Column1 == value1); 
if (value2 != null) 
    query = query.Where(x=> x.Column2 == value2); 

return query.ToList(); 

Если value является строкой, вы можете проверить string.IsNullOrEmpty(value)