C#之Expression表达式树实例

2019-12-26 11:59:02王冬梅
易采站长站为您分析C#之Expression表达式树,包括了表达式树的原理与用法技巧,需要的朋友可以参考下    

本文实例讲述了C#之Expression表达式树,。具体实现方法如下:

表达式树表示树状数据结构的代码,树状结构中的每个节点都是一个表达式,例如一个方法调用或类似 x < y 的二元运算

1.利用 Lambda 表达式创建表达式树

 

复制代码 Expression<Func<int, int, int, int>> expr = (x, y, z) => (x + y) / z;
2.编译表达式树,该方法将表达式树表示的代码编译成一个可执行委托

 

 

复制代码 expr.Compile()(1, 2, 3)
3.IQueryable<T>的扩展方法,WhereIn的实现

 

 

复制代码 var d = list.AsQueryable().WhereIn(o => o.Id1, new int[] { 1, 2 });
完整代码如下:

 

 

复制代码 using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

 

namespace MongoDBTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用LambdaExpression构建表达式树
            Expression<Func<int, int, int, int>> expr = (x, y, z) => (x + y) / z;
            Console.WriteLine(expr.Compile()(1, 2, 3));

            //使用LambdaExpression构建可执行的代码
            Func<int, int, int, int> fun = (x, y, z) => (x + y) / z;
            Console.WriteLine(fun(1, 2, 3));

            //动态构建表达式树