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 に答える