Erstellen Sie einen Ausdrucksbaum in c #

c# expression-trees linq

Frage

Ich versuche, eine dynamische Abfrage mithilfe von Ausdrucksbaumstrukturen in LINQ zu erstellen, um die folgende Abfrage darzustellen

WageConstIns.Where(WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800"));

Ich habe versucht, es so zu erstellen:

WageConstIns.Where(WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800"));

Ich bekomme während der Laufzeit einen Fehler. Wie kann die obige Abfrage am besten mit Ausdrucksbäumen erstellt werden?

Akzeptierte Antwort

Der einfachste Weg wäre, es einfach als Expression<Func<...>> zu deklarieren

public static class Program {
    public static void Main() {
        Expression<Func<DummyClass, Boolean>> predicate = WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800");
    }
}

Aber wenn du es mit verschiedenen Expressions konstruieren willst ...

public static class Program {
    public static void Main() {
        Expression<Func<DummyClass, Boolean>> predicate = WageConstIn => WageConstIn.Serialno.ToString().StartsWith("2800");
    }
}

Die meisten Leute [mit denen ich gesprochen habe], die die Domäne von Ausdrucksbäumen betreten, sind normalerweise mit der System.Linq.Dynamic Funktionalität zufrieden. (Das kann auf viele verschiedene Arten missbraucht werden.) Dieses Code-Snippet von purer Großartigkeit ist ein Teil des Visual Studio-Beispielcodes, der sich wahrscheinlich schon irgendwo auf Ihrer Festplatte versteckt.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum