SubSonic 2.1 sqlquery mehrere Wo () s?
Frage
Ich baue eine sqlquery einen Ad-hoc-Abfrage-Bildschirm zu unterstützen.
Ich möchte etwas wie folgt aus:
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);
}
Mein Problem ist - mehrere Befestigungs Wo () s scheint nicht zu funktionieren - ist das richtig
?So, jetzt schreibe ich das, aber es ist ziemlich hässlich.
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);
}
Bitte sagen Sie mir, dass es eine bessere Idiom für dieses Szenario ist. Dank!
Lösung
Starten Sie Ihre Abfrage mit ein, wo das immer true ergibt.
new Select().From().Where("1").IsEqualTo("1");
Sie dann den Rest der Abfrage mit q.And bauen. Siehe dieses Thema auch.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow