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,不会去读数据。

posted @ 2015-12-21 12:02  吃葡萄到吐葡萄皮  阅读(10851)  评论(0编辑  收藏  举报