zoukankan      html  css  js  c++  java
  • Linq中动态生成查询

    查询数据的过程中,如果需要根据某些条件的存在与否来查询,那么动态生成条件是必不可少的:

                //构造一个查询及表达式树
                IQueryable qy = cont.Category;
                ParameterExpression param = Expression.Parameter(typeof(Category), "c");
    
                //条件1
                Expression right = Expression.Constant(10);
                Expression left = Expression.Property(param, typeof(Category).GetProperty("ID"));
                Expression p1 = Expression.Equal(left, right);
    
                //组合条件2
                if (checkBox1.Checked)
                {
                    Expression right1 = Expression.Constant(11);
                    Expression filter1 = Expression.Equal(left, right1);
                    p1 = Expression.Or(p1, filter1);
                }
    
                Expression pred = Expression.Lambda(p1, param);
    
                //生成查询
                Expression expr = Expression.Call(typeof(Queryable), "Where", new Type[] { typeof(Category) }, Expression.Constant(qy), pred);
                IQueryable<Category> query = cont.Category.AsQueryable().Provider.CreateQuery<Category>(expr);
                this.dataGridView1.DataSource = query;
  • 相关阅读:
    关于学习方法
    ES6的异步操作
    Promise对象的基本用法
    Generator函数(三)
    Generator函数(二)
    Generator函数(一)
    ES6 Set结构和Map结构(上)
    mybatis02--增删改查
    myBatis01
    监听器
  • 原文地址:https://www.cnblogs.com/wjhx/p/1802255.html
Copyright © 2011-2022 走看看