在这篇文章中capucivar将介绍使用LINQ查询不同存储形式的数据的优势。
查询集合中的数据,实例中我们将查询字符串数组里索引为偶数的字符串,先来看看使用foreach查询集合。
使用foreach语句查询集合中的数据
- public void OldQuery()
- {
- string[] datasource = new string[10];
- for (int i = 0; i < 10; i++)
- {
- datasource = “A” + i.ToString().PadLeft(2, ’0′);
- }
- ArrayList results = new ArrayList();//动态创建数组,保存查询结果
- foreach (string s in datasource)
- {
int index = Int32.Parse(s.Substring(1));//获取元素的序号 - if (index % 2 == 0)//查询序号为偶数的元素
- {
- results.Add(s);
- }
- }
- foreach (string s in results)
- {
- Response.Write(s+”<br />”);
- }
- }
使用LINQ查询集合中的数据
- public void LinqQuery()
- {
- string[] datasource = new string[10];
- for (int i = 0; i < 10; i++)
- {
- datasource = “A” + i.ToString().PadLeft(2, ’0′);
- }
- //创建查询,获取序号为偶数的的元素
- var results = from s in datasource
- let index = Int32.Parse(s.Substring(1))
- where index % 2 == 0
- select s;
- //输出结果
foreach (string s in results) { - Response.Write(s + “<br/>”);
- }
- }
比较:使用foreach语句在查询数据时,foreach语句查询代码相对繁琐。而使用LINQ查询数据,一个查询表达式即可实现查询和配置查询条件两个功能,代码量相对减少,比较简洁直观。特别当包含大量的查询条件时,使用LINQ查询的代码更加显得简洁直观。
查询结果:
查询数据库中的数据,这个实例我们使用pubs数据库中的jobs表来讲解。
查询数据库中的数据传统方法往往是使用SQL语句或存储过程直接从数据库中查询数据。使用LINQ查询数据库中的数据时,首先为该数据库创建实体类,然后使用LINQ查询表达式查询表中的数据。
使用SQL语句查询数据库中的数据
在web.config文件中创建数据库连接:
- <connectionStrings>
- <add name=”DbConn” connectionString=”Data source=localhost;Initial Catalog=pubs;user id=sa;password=;” />
- </connectionStrings>
通过sql查询数据:
- public void SqlQuery()
- {
- string sql = “select * from jobs”;
- SqlConnection conn = new SqlConnection();
- conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DbConn"].ToString();
- DataTable dt = new DataTable();
- SqlDataAdapter da = new SqlDataAdapter(sql, conn);
- da.Fill(dt);
- this.GridView1.DataSource = dt;
- this.GridView1.DataBind();
- }
使用LINQ查询数据库中的数据
使用Linq查询数据库表中的数据,首先需要创建一个dbml文件(LinqDB.dbml):
接下来在LinqDB.dbml文件中创建数据库连接。在服务器资源管理器中,数据连接节点上右键添加连接,出现如下图:
填写之后确定,然后展开数据库连接表的节点,将需要查询的标拖到右侧是设计视图中:
最后实现查询:
- public void LinqSqlQuery()
- {
- LinqDBDataContext db = new LinqDBDataContext();//创建pubs数据库的数据实例
var results = from u in db.jobs
select u;//创建查询,关于语法上篇文中有提到过 - this.GridView1.DataSource = results;
- this.GridView1.DataBind();
- }
结果如下图:
比较:使用LINQ查询数据库中的代码比较简介,而使用传统的ADO.NET方法查询数据库中的数据比较烦琐。