In meinem speziellen Szenario erstelle ich dynamisch eine SQL-Anweisung, um nach Datensätzen zu suchen. Dies geschieht serverseitig in WebApi auf der Business-Service-Schicht. Jetzt möchte ich diese Funktionalität erweitern, so dass die WHERE
-Klausel auch auf der Clientseite gesetzt werden kann. Ich möchte strong-typed verwenden, damit ich keine Spaltennamen auf dem Client fest codiere.Wie bekomme ich Lambda-Ausdrucksparameter?
Bisher habe ich folgende:
1) die Spalten der Ansicht Rau aus den INFORMATION_SCHEMA
und füllt ein Dictionary<string, object>
so dass die Spaltenwerte zu einem späteren Zeitpunkt festgelegt werden. Ich könnte zu einer benutzerdefinierten Klasse wechseln, so dass ich ein Vergleichsfeld anstelle von column_name = column_value
hinzufügen kann.
2) Ich habe ein benutzerdefiniertes Attribut und eine Klasse, die nur die Such Spalten enthält, die ich an den Client verfügbar machen möchten:
public class CustomerSearchDto
{
[SearchColumn(Name = "customer_type")]
public CustomerType CustomerType { get; set; }
[SearchColumn(Name = "city")]
public string City { get; set; }
public CustomerSearchDto()
{ }
}
3) So im Client, jetzt kann ich tun:
Wie kann ich diesen Lambda-Ausdruck nehmen und die Spaltenliste aus (1) und die Spaltennamen aus (2) kennen, den Wert der entsprechenden Spalte im Wörterbuch festlegen?