MVC+EF五種條件查詢獲取數據列表方式


五中方式分為定制查詢和智能查詢,定制查詢是確定有幾個條件並且每個條件都生效的,智能查詢是不確定條件個數和條件生效個數,具體看代碼

 

 1 IList<BMS_USERS> list = entities.BMS_USERS.ToList<BMS_USERS>();
 2 
 3                 BMS_USERS user = new BMS_USERS();
 4 
 5                 #region MVC+EF多條件查詢解決辦法1 適用於智能查詢(不確定根據什么條件查詢)
 6                 ////應用LINQKit.dll插件,適用於智能查詢(不確定根據什么條件查詢)
 7                 //var builder = PredicateBuilder.True<BMS_USERS>();
 8                 //if (!string.IsNullOrEmpty(user.UNAME))
 9                 //    builder = builder.And(m => m.UNAME == user.UNAME);
10                 //if (!string.IsNullOrEmpty(user.UPWD))
11                 //    builder = builder.And(m => m.UPWD == user.UPWD);
12                 #endregion
13 
14                 #region MVC+EF多條件查詢解決辦法2 適用於定制查詢(確定根據什么條件查詢)
15                 ////適用於定制查詢(確定根據什么條件查詢)
16                 //IList<BMS_USERS> list2 = entities.BMS_USERS.Where(m => m.UNAME == "123" && m.UPWD == "456").ToList<BMS_USERS>();
17                 #endregion
18 
19                 #region MVC+EF多條件查詢解決辦法3 適用於定制查詢(確定根據什么條件查詢)
20                 ////Linq語句查詢,適用於定制查詢(確定根據什么條件查詢)
21                 //IList<BMS_USERS> list3 = (from a in list
22                 //                          where a.UNAME == "123" && a.UPWD == "456"
23                 //                          orderby a.UID descending
24                 //                          select a).ToList<BMS_USERS>();
25                 #endregion
26 
27                 #region MVC+EF多條件查詢解決辦法4 適用於定制查詢(確定根據什么條件查詢)
28                 ////Linq 適用於定制查詢(確定根據什么條件查詢)
29                 //IList<BMS_USERS> list4 = (from a in list
30                 //                          where a.UNAME == "123"
31                 //                          where a.UPWD == "456"
32                 //                          orderby a.UID descending
33                 //                          select a).ToList<BMS_USERS>();
34                 #endregion
35 
36                 #region MVC+EF多條件查詢解決辦法5 適用於智能查詢(不確定根據什么條件查詢)
37                 ////適用於智能查詢(不確定根據什么條件查詢)
38                 //var query = from a in entities.BMS_USERS select a;
39                 //if (!string.IsNullOrEmpty(user.UNAME))
40                 //    query = query.Where(d => d.UNAME == "123");
41                 //if (!string.IsNullOrEmpty(user.UPWD))
42                 //    query = query.Where(d => d.UPWD == "456");
43                 //IList<BMS_USERS> list5 = query.ToList();
44                 #endregion
View Code

 

  第一種智能查詢用了一個LINQKit.dll封裝庫,它提供了一個動態添加條件的PredicateBuilder方法,當然它的功能是非常強大的,不止這一個用途,以后樓主會詳解的。

  第二、三、四種定制查詢用了lambda或者linq語句,當然,他兩個是哥們,這兩種方式只適合提前知道幾種查詢條件的。

  第五種智能查詢是拼接的lamdba表達式,簡單實用。有人會問了,在賦值var query的時候會不會把數據提前全部取出,然而並不會,linq只有在ToList()的時候才會去度數據,前面的判斷語句只會拼接lambda,不會去讀數據。


免責聲明!

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



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