EntityFramework linq 多條件查詢,不定條件查詢


一、場景描述:

     開發的時候,有些查詢功能,往往查詢的條件是不確定的,用戶沒有填的不參與到查詢中去。

如圖1所示,用戶可能只要給根據名稱來查詢即可,有時候開始時間和結束時間並不需要填寫。

圖 1

 

二、解決方案

  如圖2所示,傳統的解決方案往往是判斷下用戶輸入了什么字段,然后寫n個 if else 來判斷

 

圖 2

 

而本文利用三目運算符,減少了代碼量,給出了優雅的實現方式:

 

        public List<Entity.Order> Search(OrderQuery orderQuery)
        {

            IQueryable<Entity.Order> orderList = shopDB.Orders.Where(p =>
                 p.Status == orderQuery.OrderStatus
                 && p.CreatedTime > orderQuery.CreatedStartTime
                 && p.CreatedTime < orderQuery.CreatedEndTime
                 && string.IsNullOrEmpty(orderQuery.ShopId) ? true : p.ShopId == orderQuery.ShopId)
                 && string.IsNullOrEmpty(orderQuery.Name) ? true : p.Name == orderQuery.Name;
             return orderList.ToList();
         }

 

如代碼所示,條件寫法為:

&& string.IsNullOrEmpty(orderQuery.Name) ? true : p.Name == orderQuery.Name

如果傳入參數orderQuery.Name為空的話,直接為ture,跳過此條件。

 

三、寫在最后

如果大家有其他好的解決方案,歡迎交流!

 


免責聲明!

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



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