2012-03-08 2 views
1

У меня есть методДобавить ограничение на основе параметра метода

List<MyType> DoQuery(bool FilterWeek) { 

    var result = session.QueryOver<MyType>() 
         .Where (r => r.isValid == 1 
           && r.value1 == 2 
           && r.name == "XYZ" 
           && [...etc, more columns are used...] 
           ) 
         // how do I go on from this point? 
} 

если параметр FilterWeek верно, я хочу, чтобы добавить дополнительный «& & r.xyz == 1» положение в Where критериев. Если FilterWeek имеет значение false, запрос выполняется.

Как это сделать?

ответ

1

это:

List<MyType> DoQuery(bool FilterWeek) { 

     var result = session.QueryOver<MyType>() 
          .Where (r => r.isValid == 1 
            && r.value1 == 2 
            && r.name == "XYZ" 
            && [...etc, more columns are used...] 
            ); 

     if(FilterWeek) 
      result.Where(x => x.Whatever == 1) 

     //the query won't get executed until here 
     result.List(); 
    } 
+0

re: // запрос не будет выполнен, пока здесь спасибо, я этого не знал. – increddibelly

4
if (FilterWeek) 
    result = result.Where(r => r.xyz ==1); 

//...whenever you're done, execute the query using List() or SingleOrDefault() 
+0

спасибо, что будет работать - но это было бы также означать, потянув намного больше данных из базы данных. Я бы предпочел сделать это через запрос. – increddibelly

+0

Вы не читали мой ответ. Вы должны добавить ограничение перед выполнением запроса. –

Смежные вопросы