c# Expression类的简介

// Add the following directive to your file:
// using System.Linq.Expressions;  

// The block expression allows for executing several expressions sequentually.
// When the block expression is executed,
// it returns the value of the last expression in the sequence.
BlockExpression blockExpr = Expression.Block(
    Expression.Call(
        null,
        typeof(Console).GetMethod("Write", new Type[] { typeof(String) }),
        Expression.Constant("Hello ")
       ),
    Expression.Call(
        null,
        typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),
        Expression.Constant("World!")
        ),
    Expression.Constant(42)
);

Console.WriteLine("The result of executing the expression tree:");
// The following statement first creates an expression tree,
// then compiles it, and then executes it.           
var result = Expression.Lambda<Func<int>>(blockExpr).Compile()();

// Print out the expressions from the block expression.
Console.WriteLine("The expressions from the block expression:");
foreach (var expr in blockExpr.Expressions)
    Console.WriteLine(expr.ToString());

// Print out the result of the tree execution.
Console.WriteLine("The return value of the block expression:");
Console.WriteLine(result);

// This code example produces the following output:
//
// The result of executing the expression tree:
// Hello World!

// The expressions from the block expression:
// Write("Hello ")
// WriteLine("World!")
// 42

// The return value of the block expression:
// 42


取得属性名:

/// <summary>
/// /Get property name
/// </summary>
/// <typeparam name="T">Type T</typeparam>
/// <param name="express">Expression of property</param>
/// <returns>property name</returns>
private static string GetPropertyName<T>(Expression<Func<T>> express)
{
     var memberExpress = express.Body as MemberExpression;
     if (memberExpress != null)
     {
         return memberExpress.Member.Name;
     }
     else
     {
         return string.Empty;
     }
}

 
 

转自

https://msdn.microsoft.com/zh-cn/library/system.linq.expressions.expression(v=vs.110).aspx

猜你喜欢

转载自blog.csdn.net/zh_geo/article/details/53167549