asp.net MVC EF Where 过滤条件怎么写

Posted 懒懒的小易

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于asp.net MVC EF Where 过滤条件怎么写的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Mvc开发之EF延迟加载

使用多个字段过滤/搜索 - ASP.NET MVC

多个过滤器搜索没有多个选项-ASP.NET MVC

Asp.Net MVC EF各版本区别

Asp.Net MVC EF各版本区别

ASP.NET MVC和EF集成AngularJS开发