Expression TreesExpression Trees

Wenn Sie LINQ verwendet haben, verfügen Sie über Erfahrung mit einer umfangreichen Bibliothek, in der die Func-Typen Teil des API-Satzes sind.If you have used LINQ, you have experience with a rich library where the Func types are part of the API set. (Wenn Sie nicht mit LINQ vertraut sind, möchten Sie möglicherweise vorher das LINQ-Tutorial und das Tutorial zu lambda expressions (Lambdaausdrücke) lesen.) Ausdrucksbaumstrukturen bieten eine umfangreichere Interaktion mit den Argumenten, die Funktionen sind.(If you are not familiar with LINQ, you probably want to read the LINQ tutorial and the tutorial on lambda expressions before this one.) Expression Trees provide richer interaction with the arguments that are functions.

Sie schreiben die Argumente der Funktion in der Regel mithilfe von Lambdaausdrücken, wenn Sie LINQ-Abfragen erstellen.You write function arguments, typically using Lambda Expressions, when you create LINQ queries. In einer normalen LINQ-Abfrage werden die Funktionsargumente in einen Delegaten transformiert, den der Compiler erstellt.In a typical LINQ query, those function arguments are transformed into a delegate the compiler creates.

Wenn Sie eine umfangreichere Interaktion haben möchten, müssen Sie Ausdrucksbaumstrukturen verwenden.When you want to have a richer interaction, you need to use Expression Trees. Ausdrucksbaumstrukturen stellen Code wie eine Struktur dar, die Sie untersuchen, ändern oder ausführen können.Expression Trees represent code as a structure that you can examine, modify, or execute. Diese Tools bieten Ihnen die Möglichkeit, Code während der Laufzeit zu ändern.These tools give you the power to manipulate code during run time. Sie können Code schreiben, der ausgeführte Algorithmen untersucht oder neue Funktionen einfügt.You can write code that examines running algorithms, or injects new capabilities. In erweiterten Szenarios können Sie ausgeführte Algorithmen ändern und sogar C#-Ausdrücke für die Ausführung in einer anderen Umgebung in eine andere Form übersetzen.In more advanced scenarios, you can modify running algorithms, and even translate C# expressions into another form for execution in another environment.

Sie haben wahrscheinlich bereits Code geschrieben, der Ausdrucksbaumstrukturen verwendet.You've likely already written code that uses Expression Trees. LINQ-APIs von Entity Framework akzeptieren Ausdrucksbaumstrukturen als Argumente für das LINQ-Abfrageausdrucksmuster.Entity Framework's LINQ APIs accept Expression Trees as the arguments for the LINQ Query Expression Pattern. So kann Entity Framework die Abfrage übersetzen, die Sie in C# in SQL geschrieben haben, die im Datenbankmodul ausgeführt wird.That enables Entity Framework to translate the query you wrote in C# into SQL that executes in the database engine. Ein weiteres Beispiel ist Moq, was ein beliebtes Mockingframework für .NET ist.Another example is Moq, which is a popular mocking framework for .NET.

In den verbleibenden Abschnitten dieses Tutorials wird untersucht, was Ausdrucksbaumstrukturen sind, es werden die Framework-Klassen untersucht, die Ausdrucksbaumstrukturen unterstützen, und es wird gezeigt, wie Sie mit Ausdrucksbaumstrukturen arbeiten.The remaining sections of this tutorial will explore what Expression Trees are, examine the framework classes that support expression trees, and show you how to work with expression trees. Sie erfahren, wie Sie Ausdrucksbaumstrukturen lesen und diese erstellen, wie Sie geänderte Ausdrucksbaumstrukturen erstellen und wie Sie Code von dargestellten Ausdrucksbaumstrukturen ausführen.You'll learn how to read expression trees, how to create expression trees, how to create modified expression trees, and how to execute the code represented by expression trees. Nach dem Lesen können Sie mit diesen Strukturen umfangreiche adaptive Algorithmen erstellen.After reading, you will be ready to use these structures to create rich adaptive algorithms.

  1. Ausdrucksbaumstrukturen mit ErläuterungExpression Trees Explained

    Verstehen der Struktur und der Konzepte hinter Ausdrucksbaumstrukturen.Understand the structure and concepts behind Expression Trees.

  2. Framework-Typen, die Ausdrucksbaumstrukturen unterstützenFramework Types Supporting Expression Trees

    Erfahren Sie mehr über die Strukturen und Klassen, die Ausdrucksbaumstrukturen definieren und bearbeiten.Learn about the structures and classes that define and manipulate expression trees.

  3. Ausführen von AusdrückenExecuting Expressions

    Erfahren Sie, wie Sie eine Ausdrucksbaumstruktur, die als Lambdaausdruck dargestellt wird, in einen Delegaten konvertieren, und wie Sie den resultierenden Delegaten ausführen.Learn how to convert an expression tree represented as a Lambda Expression into a delegate and execute the resulting delegate.

  4. Interpretieren von AusdrückenInterpreting Expressions

    Erfahren Sie, wie Sie Ausdrucksbaumstrukturen durchlaufen und untersuchen, um zu verstehen, welchen Code die Ausdrucksbaumstruktur darstellt.Learn how to traverse and examine expression trees to understand what code the expression tree represents.

  5. Erstellen von AusdrückenBuilding Expressions

    Erfahren Sie, wie Sie die Knoten für eine Ausdrucksbaumstruktur erstellen, und wie Sie Ausdrucksbaumstrukturen erstellen.Learn how to construct the nodes for an expression tree and build expression trees.

  6. Übersetzen von AusdrückenTranslating Expressions

    Erfahren Sie, wie Sie eine geänderte Kopie einer Ausdrucksbaumstruktur erstellen oder wie Sie eine Ausdrucksbaumstruktur in ein anderes Format übersetzen.Learn how to build a modified copy of an expression tree, or translate an expression tree into a different format.

  7. SchlussbemerkungSumming up

    Überprüfen Sie die Informationen zu Ausdrucksbaumstrukturen.Review the information on expression trees.