0

我正在构建一个 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);
}

请告诉我,这种情况有更好的成语。谢谢!

4

1 回答 1

1

从始终评估为 true 的 where 开始查询。

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

然后使用 q.And 构建查询的其余部分。也请参阅此线程

于 2009-04-29T15:14:37.327 回答