SubSonic 2.1 SqlQuery複数のWhere()s?
質問
アドホッククエリ画面をサポートする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を使用して残りのクエリを構築します。 このスレッドも参照してください。
所属していません StackOverflow