使用Expression 生成sql update语句的时候遇到了个问题 ,Expression<Action<T>> la 这个委托里面老获取不到 引用类型的值,甚至连变量的值都不好获取 只能获取常量(ConstantExpression)的值 折腾一晚上之后终于找到解决方案 if (sqlWhere == "") return 0; Type type = typeof(T); var param = ReflectionUtil.CreateIns…
上一扁使用动态lambda表达式来将DataTable转换成实体,比直接用反射快了不少.主要是首行转换的时候动态生成了委托. 后面的转换都是直接调用委托,省去了多次用反射带来的性能损失. 今天在对SqlServer返回的流对象 SqlDataReader 进行处理,也采用动态生成Lambda表达式的方式转换实体. 先上一版代码 using System; using System.Collections.Generic; using System.Data; using System.Data.…
什么是Lambda Expression 对于Lambda Expression,我的理解是,它是一个函数表达式,如下: (int x, int y) -> x - y 符号左边定义了函数的输入,右边定义了输出.在上面的例子中,我们定义了一个关于x,y的函数,这个函数的作用是计算两者之差.那么它的类型是什么呢?比如1+1这个表达式它的(返回值)类型是int.对于函数表达式,它的类型一般是由上下文定的. 把上面的例子放到具体使用环境中,如下所示,我们可以根据上下文语义判断,该Lambda Expr…