标签:
本节我们主要介绍一下如何创建查询集合类型,关系数据库类型,DataSet对象类型和XML类型的数据源的Linq查询表达式。
下面在实例代码ReadyCollectionData()函数创建了准备的数据源:
1、创建集合类型的查询。
创建一个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 public UserBaseInfo(int Id, string userName, string email, int roleId, List<string> aliasName) 29 : this(Id, userName, email, roleId) 30 { 31 this.aliasname = aliasName; 32 } 33 34 public List<string> AliasName 35 { 36 get { return this.aliasname; } 37 set { this.aliasname = AliasName; } 38 } 39 40 public int ID 41 { 42 get { return this.id; } 43 set 44 { 45 this.id = ID; 46 } 47 } 48 49 public string Email 50 { 51 get { return this.email; } 52 set { this.email = Email; } 53 } 54 55 public int RoleId 56 { 57 get { return this.roleid; } 58 set { this.roleid = RoleId; } 59 } 60 61 public string UserName 62 { 63 get { return this.username; } 64 set { this.username = UserName; } 65 } 66 }
ReadyCollectionData方法准备数据源:
1 private void ReadyCollectionData() 2 { 3 //创建一个数组 4 int[] datasource = new int[100]; 5 6 for(int i=0;i<100;i++) 7 { 8 datasource[i] = i; 9 } 10 11 //准备数据源创建一个泛型列表元素类型为UserBaseInfo 12 List<UserBaseInfo> users = new List<UserBaseInfo>(); 13 14 for (int i = 1; i < 10; i++) 15 { 16 users.Add(new UserBaseInfo(i, "user0" + i.ToString(), "user0" + i.ToString() + "@web.com")); 17 } 18 }
下面我们来创建一个Linq查询表达式来查询出ID大于3的元素:
1 //以下是创建Linq查询 2 var result = from u in users 3 4 where u.ID > 3 5 select u;
最终的代码:
1 private void ReadyCollectionData() 2 { 3 //创建一个数组 4 int[] datasource = new int[100]; 5 6 for (int i = 0; i < 100; i++) 7 { 8 datasource[i] = i; 9 } 10 11 //准备数据源创建一个泛型列表元素类型为UserBaseInfo 12 List<UserBaseInfo> users = new List<UserBaseInfo>(); 13 14 for (int i = 1; i < 10; i++) 15 { 16 users.Add(new UserBaseInfo(i, "user0" + i.ToString(), "user0" + i.ToString() + "@web.com")); 17 } 18 19 20 //以下是创建Linq查询 21 var result = from u in users 22 23 where u.ID > 3 24 select u; 25 26 foreach (var u in result) 27 { 28 Response.Write("ID:" + u.ID + "</br>" + "username:" + u.UserName+"</br>"); 29 } 30 31 }
看看输出结果:
是不是已经完成过滤了。其实和sql的查询语句很像。
2、创建DataSet类型的查询表达式。
创建一个userinfo表,做默认数据如下:
然后我们的代码里面的函数ReadyDataSetData()用来获取userinfo表里面的数据,通过linq进行过滤。
1 private void ReadyDataSetData() 2 { 3 SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LinqDBConnectionString"].ConnectionString); 4 5 string cmdText = "SELECT * FROM UserInfo"; 6 ///创建执行SQL语句的命令 7 SqlDataAdapter da = new SqlDataAdapter(cmdText, con); 8 ///打开数据库的连接 9 con.Open(); 10 ///执行查询操作 11 DataSet ds = new DataSet(); 12 da.Fill(ds, "UserInfo"); 13 con.Close(); 14 15 //以下为linq查询表达式: 16 var result = from u in ds.Tables["userinfo"].AsEnumerable() 17 where u.Field<int>("id") > 5 18 select u; 19 20 }
可以看出我们的代码中是过滤出 id大于5的元素。
看到查询结果和我们预想的一样。
3、创建sqlserver数据库类型的查询表达式。
我们依然用sql中的userinfo表
1 private void ReadyDatabaseData() 2 { ///准备数据源,创建LinqDB数据库的数据上下文类的实例 3 LinqDBDataContext db = new LinqDBDataContext(ConfigurationManager.ConnectionStrings["LinqDBConnectionString"].ConnectionString); 4 Table<userinfo> users = db.userinfo; 5 ///以下为LINQ查询表达式 6 7 var result = from u in users 8 where u.id > 3 && u.id < 5 9 select u; 10 }
看代码是过滤 id大于3且小于5的,那么就只有id为4的了。看结果:
4、最后一个查询,创建XML查询语句。
1 private void ReadyXmlData() 2 { ///准备数据源,创建XML类型的数据源 3 string xmlString = 4 "<Books>" 5 + "<Book ID=\"101\">" 6 + "<No>00001</No>" 7 + "<Name>Book 0001</Name>" 8 + "<Price>100</Price>" 9 + "<Remark>This is a book 00001.</Remark>" 10 + "</Book>" 11 + "<Book ID=\"102\">" 12 + "<No>00002</No>" 13 + "<Name>Book 0002</Name>" 14 + "<Price>200</Price>" 15 + "<Remark>This is a book 00002.</Remark>" 16 + "</Book>" 17 + "<Book ID=\"103\">" 18 + "<No>0006</No>" 19 + "<Name>Book 0006</Name>" 20 + "<Price>600</Price>" 21 + "<Remark>This is a book 0006.</Remark>" 22 + "</Book>" 23 + "</Books>"; 24 ///导入XML文件 25 XElement xmlDoc = XElement.Parse(xmlString); 26 ///以下为LINQ查询表达式 27 28 var result = from e in xmlDoc.Elements("Book") 29 where (string)e.Element("Name") == "Book 0002" 30 select e; 31 32 foreach (var u in result) 33 { 34 Response.Write("NO:" + (string)u.Element("No") + "</br>" + "Name:" + (string)u.Element("Name") + "</br>"); 35 } 36 }
ReadyXmlData方法中我们创建了一个xml文档,然后过滤出Book元素且Name为"Book ooo2"的元素。
我们先简单了解了一下Linq对四种对象的查询方法,后面我们会有更详细的讲解。
标签:
原文地址:http://www.cnblogs.com/yplong/p/5412138.html