2009-04-29 6 views
0

Я создаю SqlQuery для поддержки экрана специальных запросов.SubSonic 2.1 SqlQuery multiple Где() s?

Я хочу что-то вроде этого:

SqlQuery q = new Select().From<VwInstitutes>(); 
if (!string.IsNullOrEmpty(username)) 
{ 
    q.Where(VwInstitutes.Columns.AssignedUser).IsEqualTo(username); 
} 

if (!string.IsNullOrEmpty(stage)) 
{ 
    q.Where(VwInstitutes.Columns.Stage).IsEqualTo(stage); 
} 

Моя проблема - присоединив несколько Где() s не похоже на работу - это правильно?

Итак, теперь я пишу это, но это довольно уродливо.

if (!string.IsNullOrEmpty(username)) 
{ 
    if (q.HasWhere) q.And(VwInstitutes.Columns.AssignedUser).IsEqualTo(username); 
    else q.Where(VwInstitutes.Columns.AssignedUser).IsEqualTo(username); 
} 

if (!string.IsNullOrEmpty(stage)) 
{ 
    if (q.HasWhere) q.And(VwInstitutes.Columns.Stage).IsEqualTo(stage); 
    else q.Where(VwInstitutes.Columns.Stage).IsEqualTo(stage); 
} 

Скажите, пожалуйста, что для этого сценария лучше идиомы. Благодаря!

ответ

1

Начните свой запрос с того места, где всегда оценивается значение true.

new Select().From().Where("1").IsEqualTo("1"); 

затем построить остальную часть запроса с помощью q.And. См. Также this thread.

+0

thanks ranomore. Да, я забыл этот старый трюк. Я думаю, что это тоже немного уродливо - в том смысле, что это не способствует семантике запроса, но это МЕНЬШЕ уродливо, чем то, как я это делал. Как плакат в теме, с которой вы связались, интересно, что случилось с AddWhere() .... – 2009-04-29 15:29:27

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

  • Нет связанных вопросов^_^