Ich habe Schwierigkeiten beim Erstellen von Lambda-basierten Linq-Ausdrücken aus einer Zeichenfolge. Hier ist mein Grund Fall mit dieser Probe Objekt/Klasse:Wie erstellt man einen dynamischen Lambda-basierten Linq-Ausdruck aus einem String in C#?
public class MockClass
{
public string CreateBy { get; set; }
}
Im Grunde brauche ich eine Zeichenfolge wie folgt zu konvertieren:
string stringToConvert = “x => x.CreateBy.Equals(filter.Value, StringComparison.OrdinalIgnoreCase”;
In a/Linq Ausdruck Prädikat:
System.Linq.Expressions.Expression<Func<T, bool>> or in this example
System.Linq.Expressions.Expression<Func<MockClass, bool>>
Dies entspricht also dem Linq-Ausdruck in der unten angegebenen Where-Methode:
query = query.Where(x => x.CreateBy.Equals(filter.Value,
StringComparison.OrdinalIgnoreCase));
Ich habe versucht, die folgenden Helfer zu verwenden, aber ich kann nicht herausfinden, wie sie in dieser Art von Fall zu arbeiten, wo ich einen Linq-Ausdruck aus Zeichenfolge erstellen, die nicht wissen, vor der Zeit ist : http://www.albahari.com/nutshell/predicatebuilder.aspx
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx (es ist jetzt als NuGet Paket als auch als „DynamicQuery“ verfügbar) gefragt wurde hier
Warum setzen Sie den Ausdruck in eine Zeichenfolge ein? Gibt der Benutzer diesen Ausdruck ein? Speichern Sie es in seinem richtigen Typ. –
Der Nichtentwicklerbenutzer gibt dynamisch eine Abfragesyntax ein, die einer Suchsyntax ähnelt, die in der Querystring übergeben wird, und dann muss all dies, z. Es ist etwas schwieriger, den richtigen Typ zu erhalten, wenn es sich um eine Eigenschaft oder Untereigenschaft einer großen Anzahl von Typen und verschachtelten Typen handeln kann. – jon333