Csharp/CSharp Tutorial/LINQ/Expressions
Содержание
Cast to BinaryExpression
<source lang="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; using System.Xml.Linq; class Program {
static void Main(string[] args) { Func<int, int> func1 = x => x + 5; var result = func1(1); Expression<Func<int, int>> expression = func => func + 5; var originalDelegate = expression.rupile(); var three = originalDelegate.Invoke(2); BinaryExpression operation = (BinaryExpression)expression.Body; Console.WriteLine(operation.NodeType); }
}</source>
Cast to ParameterExpression
<source lang="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; using System.Xml.Linq; class Program {
static void Main(string[] args) { Func<int, int> func1 = x => x + 5; var result = func1(1); Expression<Func<int, int>> expression = func => func + 5; var originalDelegate = expression.rupile(); var three = originalDelegate.Invoke(2); ParameterExpression parameter = (ParameterExpression)expression.Parameters[0]; Console.WriteLine(parameter.Name); }
}</source>
Compiled Expression Tree
<source lang="csharp">using System; using System.ruponentModel; using System.Linq.Expressions;
class CompiledExpressionTree { static void Main() { Expression firstArg = Expression.Constant(2); Expression secondArg = Expression.Constant(3); Expression add = Expression.Add(firstArg, secondArg); Func<int> compiled = Expression.Lambda<Func<int>>(add).rupile(); Console.WriteLine(compiled()); } }</source>
Expression Tree
<source lang="csharp">using System; using System.Linq.Expressions; using System.ruponentModel;
class MainClass { static void Main() { Expression firstArg = Expression.Constant(2); Expression secondArg = Expression.Constant(3); Expression add = Expression.Add(firstArg, secondArg); Console.WriteLine(add); } }</source>
Lambda Expression To Expression Tree
<source lang="csharp">using System; using System.ruponentModel; using System.Linq.Expressions;
class MainClass { static void Main() { Expression<Func<int>> return5 = () => 5; Func<int> compiled = return5.rupile(); Console.WriteLine(compiled()); } }</source>
Lambda Expression With Parameters To Expression Tree
<source lang="csharp">using System; using System.ruponentModel; using System.Linq.Expressions;
class MainClass { static void Main() { Expression<Func<string, string, bool>> expression = ((x, y) => x.StartsWith(y)); var compiled = expression.rupile(); Console.WriteLine(compiled("First", "Second")); Console.WriteLine(compiled("First", "Fir")); } }</source>