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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM