zoukankan      html  css  js  c++  java
  • asp.net MVC EF Where 过滤条件怎么写

    做.Net开发的肯定都知道.Net Sql语句有个SqlParameter 一般用来做过滤判断逻辑写,那么到了EF 了还有这样的写法嘛?答案肯定是有的了,这里我只是把最粗糙和简单的写法罗列一些,具体封装方法什么,有兴趣的小伙伴们可以自己去做:

             我这里有个Tb_NewsInfo_View Model实体首先需要带条件过滤 废话就不多说了的
    //参数类型转换 
    var parameter = Expression.Parameter(typeof(Tb_NewsInfo_View))
                var type = typeof(Tb_NewsInfo_View);
    Expression expr = Expression.Constant(true);
       //这个类似于like用的是Contains包含方法代替
    var methodtype = typeof(string).GetMethod("Contains", new Type[] { typeof(string) });
        
             if (!string.IsNullOrWhiteSpace(newsTitle))
                {
                    expr = Expression.And(expr,
                        Expression.Call(Expression.Property(parameter, "Tb_NewsTitle"), methodtype,
                        Expression.Constant(newsTitle)));
                }
    
                if (!string.IsNullOrWhiteSpace(startdate.ToString()))
                {
                    expr = Expression.And(expr, 
                        Expression.GreaterThanOrEqual(
                        Expression.Property(parameter, "Tb_CreateDate"),
                        Expression.Constant(startdate,typeof(DateTime?)
                        )));
                }
                if (!string.IsNullOrWhiteSpace(enddate.ToString()))
                {
                    expr = Expression.And(expr, 
                        Expression.LessThanOrEqual(
                        Expression.Property(parameter, "Tb_CreateDate"), 
                        Expression.Constant(enddate, typeof(DateTime?)
                        )));
                }
    //这里参数传入了就拼接对应条件
        //最后带入查询方法
       var lambda = Expression.Lambda<Func<Tb_NewsInfo_View, bool>>(expr, parameter);
                result = EF_Res_View.GetPageEntities(pageNo, pageSize,lambda, m => m.Tb_NewId, isAsc, out count).ToList();
    
    
    过滤拼接EF Where 条件就是这么简单
    

     本人原网址:http://www.wuhannews.net/news/10304.html

  • 相关阅读:
    昨天晚上简单英文词典查询及排版系统写完了
    c函数 atoi() 将字符串转换为整型 kbhit() 检测是否有按键按下 区分bioskey()
    写了一个字典树
    用scanf清空缓冲区 对比fflush
    爬取千千小说 -- xpath
    第二十六篇 -- 去掉标题栏并自定义标题栏
    git clone 中途停止不动
    使用turtle库画一朵玫瑰花带文字
    正则爬取我要个性网的头像
    用Pygal画一个英雄能力的图
  • 原文地址:https://www.cnblogs.com/yiliuyang/p/5300785.html
Copyright © 2011-2022 走看看