使用Expression动态构造一个条件表达式
2016-08-16 17:06
302 查看
设有对象:
class Student
{
pubic string Name{get;set;}
}
查询时,使用t=>t.Name=="jim";但如果条件参数不是固定的,需要动态构造,则不能在代码中这样硬编码了,需要使用Expression动态创建。如下所示:
Expression<Func<Student, bool>> Build(Student student)
{
var pe = Expression.Parameter(typeof(Student));
var p=typeof(TModel).GetProperty("Name");
var memberExpression = Expression.PropertyOrField(pe, p.Name);
var equalExpression = Expression.Equal(memberExpression, Expression.Constant(p.GetValue(student,null));
return Expression.Lambda<Func<Student, bool>>(equalExpression, pe));
}
class Student
{
pubic string Name{get;set;}
}
查询时,使用t=>t.Name=="jim";但如果条件参数不是固定的,需要动态构造,则不能在代码中这样硬编码了,需要使用Expression动态创建。如下所示:
Expression<Func<Student, bool>> Build(Student student)
{
var pe = Expression.Parameter(typeof(Student));
var p=typeof(TModel).GetProperty("Name");
var memberExpression = Expression.PropertyOrField(pe, p.Name);
var equalExpression = Expression.Equal(memberExpression, Expression.Constant(p.GetValue(student,null));
return Expression.Lambda<Func<Student, bool>>(equalExpression, pe));
}
相关文章推荐
- 使用Dynamic.cs动态构造Lambda 表达式
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 可动态构造查询条件的表达式类库(1)
- [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
- 练习 2-2 在不使用运算符&&或||的条件下编写一个与上面的for 循环语句等价的循环语句。
- 使用Expression动态创建lambda表达式
- //使用条件表达式作为简单的“如果...那么...”判断。 #include <iostream> using namespace std; int main() { int score=2; s
- #if,#ifdef和#if defined对于条件编译#if,#ifdef和#if defined这些,深究起来还是有些意思 #if要求是一个表达式,为真则执行以下代码, #ifdef则只要求是
- 一个好看的弹出提示框样式,toastr插件的使用及动态展示分析
- (CVTE 笔试题)已知一个数组,不使用除法构造另一数组。
- 在 React 条件渲染中使用三元表达式和 “&&”
- mybatis学习之路----动态sql之if条件判断各种使用方式
- springboot根据不同的条件创建bean,动态创建bean,@Conditional注解使用
- 请使用socket相关函数(非curl)实现如下功能:构造一个post请求,发送到指定httpserver的指定端口的指定请求路径(如http://www.example.com:8080/test)
- delphi中使用sql语句加条件引用时值是一个整型变量的问题
- iOS NSRegularExpression 正则表达式的编写和使用
- 输入一个Email地址,然后使用正则表达式验证该Email地址是否正确。
- 输入一个Email地址,然后使用正则表达式验证该Email地址是否正确。