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!

War es hilfreich?

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
scroll top