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         }

我們用兩種方式,我們來看看最終結果:

可以看到查詢的結果是一樣的。

 


免責聲明!

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



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