Ich baue eine SqlQuery zur Unterstützung eines Ad-hoc-Abfrage-Bildschirm.SubSonic 2.1 SqlQuery mehrere Where() s?
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 nicht zu funktionieren scheint - ist das richtig?
Also 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 ein besseres Idiom für dieses Szenario gibt. Vielen Dank!
danke ranomore. Ja, ich habe diesen alten Trick vergessen. Ich denke, es ist auch ein bisschen hässlich - insofern trägt es nicht zur Semantik der Abfrage bei - aber es ist WENIGER hässlich als das, was ich tat. Wie das Poster in dem Thread, mit dem du verlinkt bist, frage ich mich, was mit AddWhere() passiert ist .... –