SubSonic 2.1 SqlQuery несколько Где () с? - PullRequest
0 голосов
/ 29 апреля 2009

Я создаю SqlQuery для поддержки экрана специальных запросов.

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

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); 
}

Моя проблема - прикрепление нескольких Where () не работает - это правильно?

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

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 Ответ

1 голос
/ 29 апреля 2009

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

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

затем построите оставшуюся часть запроса с помощью q.And. См. Также эту тему .

...