質問

アドホッククエリ画面をサポートする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()をアタッチしても機能しないように見えることです-それは正しいですか?

だから今これを書いていますが、かなりprettyいです。

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

このシナリオにはより良いイディオムがあることを教えてください。ありがとう!

役に立ちましたか?

解決

常にtrueと評価される場所でクエリを開始します。

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

その後、q.Andを使用して残りのクエリを構築します。 このスレッドも参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top