摘要:[LINQ] LINQ to Object 實例 (LIST
文章轉自:http://book.51cto.com/art/200911/161447.htm
11.3 演练:使用LINQ to Object实现学生成绩信息查询(1)
- 摘要:《ASP.NET 3.5网站开发全程推演与视频精讲》第11章使用LINQ查询数据,本章我们已经学习LINQ的核心技术,可以在程序语言中实现更加灵活的数据查询。本节为大家介绍演练:使用LINQ to Object实现学生成绩信息查询。
- 标签:ASP.NET 3.5 网站开发 ASP.NET 3.5网站开发全程推演与视频精讲
11.3 演练:使用LINQ to Object实现学生成绩信息查询(1)
视频精讲:光盘\video\baseVideo\11\使用LINQ to Object.swf
LINQ查询支持的第一种形式就是"LINQ to Object"。术语"LINQ to Objects"是指直接对任意 IEnumerable 或 IEnumerable(T) 集合使用LINQ查询,无须使用中间LINQ提供程序或API,如LINQ to SQL或 LINQ to XML。可以使用LINQ查询任何可枚举的集合,如List(T)、Array或Dictionary(TKey, TValue)。该集合可以是用户定义的集合,也可以是.NET Framework API返回的集合。
从根本上说,LINQ to Objects表示一种新的处理集合的方法。如果采用旧方法,必须编写指定如何从集合中检索数据的复杂的foreach循环。而采用 LINQ 方法,只需编写描述要检索的内容的声明性代码。
另外,与传统的foreach循环相比,LINQ查询具有以下三大优势:
它们更简明、更易读,尤其在筛选多个条件时。
它们使用最少的应用程序代码提供强大的筛选、排序和分组功能。
无须修改或只需做很小的修改即可将它们移植到其他数据源。
通常,对数据执行的操作越复杂,体会到的使用 LINQ 代替传统迭代技术的好处就越多。下面我们通过一个示例来分析如何使用LINQ to Object。
基于LINQ to Object,实现对学生成绩信息的查询显示。
我们可以按照如下步骤来加以实现。
创建ASP.NET Web应用。
添加数据源。
创建LINQ to Object查询。
编译并执行。
具体步骤如下。
打开Visual Studio 2008,创建一个ASP.NET Web 应用项目,命名为"LinqtoObjectApp"。
打开项目的默认窗体"Default.aspx",切换到设计视图,添加一个GridView控件,用于显示查询结果信息,如图11-9所示。
在解决方案资源管理器中用鼠标右键单击所创建的项目,在弹出的快捷菜单中选择【添加类】命令,在打开的对话框中添加一个类"Student.cs",如图11-10所示。
(点击查看大图)图11-9 添加控件 |
(点击查看大图)图11-10 添加类 |
编码学生类,如下所示:
【程序11-5】光盘\code\11\LinqtoObjectApp \Student.cs
- 01 using System;
- 02 using System.Collections.Generic;
- 03 using System.Linq;
- 04 using System.Web;
- 05 namespace LinqtoObjectApp
- 06 {
- 07 public class Student
- 08 {
- 09 public string Name { get; set; }
- 10 public int ID { get; set; }
- 11 public List<int> Scores;
- 12 }
- 13 }
编码default.aspx.cs,执行查询:
【程序11-6】光盘\code\11\LinqtoObjectApp \default.aspx.cs
- 01 using System;
- 02 using System.Collections.Generic;
- 03 using System.Linq;
- 04 using System.Web;
- 05 using System.Web.UI;
- 06 using System.Web.UI.WebControls;
- 07
- 08 namespace LinqtoObjectApp
- 09 {
- 10 public partial class _Default : System.Web.UI.Page
- 11 {
- 12 protected void Page_Load(object sender, EventArgs e)
- 13 {
- 14 List<Student> students = new List<Student>
- 15 {
- 16 new Student {Name="张涛", ID=111,
Scores= new List<int> {97, 92, 81, 60}},- 17 new Student {Name="周明海", ID=112,
Scores= new List<int> {75, 84, 91, 39}},- 18 new Student {Name="吴军", ID=113,
Scores= new List<int> {88, 94, 65, 91}},- 19 new Student {Name="李行",ID=112,
Scores= new List<int> {97, 89, 85, 82}},- 20 new Student {Name="姚克峰", ID=115,
Scores= new List<int> {35, 72, 91, 70}},- 21 new Student {Name="张见明", ID=116,
Scores= new List<int> {99, 86, 90, 94}},- 22 new Student {Name="刘涛",ID=117,
Scores= new List<int> {93, 92, 80, 87}},- 23 new Student {Name="马明袁", ID=118,
Scores= new List<int> {92, 90, 83, 78}},- 24 new Student {Name="袁佳", ID=119,
Scores= new List<int> {68, 79, 88, 92}},- 25 new Student {Name="余中鑫", ID=120,
Scores= new List<int> {99, 82, 81, 79}},- 26 new Student {Name="欧阳正红", ID=121,
Scores= new List<int> {96, 85, 91, 60}},- 27 new Student {Name="杨证", ID=122,
Scores= new List<int> {94, 92, 91, 91} }- 28 };
- 29 var studentQuery =
- 30 from student in students
- 31 where student.Scores[0] > 90
- 32 select student;
- 33 GridView1.DataSource = studentQuery;
- 34 GridView1.DataBind();
- 35 }
- 36 }
- 37 }