SubSonic 2.1 SqlQuery多个Where()s?

时间:2009-04-29 15:01:42

标签: subsonic where sql

我正在构建一个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 个答案:

答案 0 :(得分:1)

使用始终评估为true的位置开始查询。

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

然后使用q.And构建查询的其余部分。另见this thread