Linq查询操作之Where筛选

  筛选操作where能够处理逻辑运算符组成的逻辑表达式。比如逻辑“与”,逻辑“或”,并从数据源中筛选数据,它和where子句的功能非常相似。Enumerable类的Where()原型如下:

 1 public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate); 

其中source表示要筛选的数据源,predicate表示筛选函数,该函数用来指定元素满足的条件。

  下面的实例代码WhereFilterQuery()函数演示了where操作筛选的方法。

具体的演示数据我们还是用前面讲解的UserBaseInfo类。

 1 public class UserBaseInfo
 2     {
 3         private List<string> aliasname;
 4         private int id;
 5         private string email;
 6         private int roleid;
 7         private string username;
 8 
 9         public UserBaseInfo(int Id, string userName, string email, List<string> aliasName)
10             : this(Id, userName, email)
11         {
12 
13             this.aliasname = aliasName;
14         }
15 
16         public UserBaseInfo(int Id, string userName, string email)
17         {
18             this.id = Id;
19             this.username = userName;
20             this.email = email;
21         }
22 
23         public UserBaseInfo(int Id, string userName, string email, int roleId)
24             : this(Id, userName, email)
25         {
26             this.roleid = roleId;
27         }
28 
29         public UserBaseInfo(int Id, string userName, string email, int roleId, List<string> aliasName)
30             : this(Id, userName, email, roleId)
31         {
32             this.aliasname = aliasName;
33         }
34 
35         public List<string> AliasName
36         {
37             get { return this.aliasname; }
38             set { this.aliasname = AliasName; }
39         }
40 
41         public int ID
42         {
43             get { return this.id; }
44             set
45             {
46                 this.id = ID;
47             }
48         }
49 
50         public string Email
51         {
52             get { return this.email; }
53             set { this.email = Email; }
54         }
55 
56         public int RoleId
57         {
58             get { return this.roleid; }
59             set { this.roleid = RoleId; }
60         }
61 
62         public string UserName
63         {
64             get { return this.username; }
65             set { this.username = UserName; }
66         }
67     }

首先我们创建一个数据类型为List<UserBaseInfo>类型的对象users,包含9个元素。然后我们用Linq查询出ID的值小于3的元素。在这里我们用2中查询方式,一种就是前面讲过的查询表达式,一种就是现在讲的查询操作。

 1  private void WhereFilterQuery()
 2         {
 3 
 4             List<UserBaseInfo> users = new List<UserBaseInfo>();
 5   
 6 
 7             for (int i = 1; i < 10; i++)
 8             {
 9                 users.Add(new UserBaseInfo(i, "users0" + i.ToString(), "user0" + i.ToString() + "@web.com", i * 2));
10                
11             }
12 
13             //查询表达式
14             var result1 = from u in users
15                           where u.ID < 3
16                           select u;
17 //查询操作
18             var result2 = users.Where(u=>u.ID<3);
19 
20             Response.Write("------查询表达式-----------</br>");
21             foreach (var u in result1)
22             {
23 
24                 Response.Write("用户ID"+u.ID+"_" +"用户名"+u.UserName+ "</br>");
25  
26             }
27 
28             Response.Write("------查询操作-----------</br>");
29             foreach (var u in result2)
30             {
31 
32                 Response.Write("用户ID" + u.ID + "_" + "用户名" + u.UserName + "</br>");
33 
34             }
35         }

我们用两种方式,我们来看看最终结果:

可以看到查询的结果是一样的。

 

posted @ 2016-04-21 14:03  IT少年  阅读(6764)  评论(0编辑  收藏  举报