Linq 是一跨各种数据源和数据格式的数据模型;它在查询是,始终是把它作为一种对象来操作,可以使用基本相同的编码模型查询和数据的转换XML,SQL,ADO数据等;
Linq查询的三个步骤
在我们使用Linq来查询数据的时候我们都会按照这三个步骤来做,这是初学者应该记住
1.创建数据源,这里的数据源可以是数组,集合,XML,SQL等数据库
2.新建一个查询,
如: from xxxx in xxxxx where xxx select;这一种结构,注意的是,必须以from开头,select结尾
3.执行查询。在这里我们通常用到执行查询就是foreach来做,当然有for语句也可以,但后者在效率上没有前者好;
下面我们就用这个三个步骤来做一个示例:
1
using
System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Collections;
6
7 namespace LINQDemo
8 {
9 class Program
10 {
11 static void Main( string [] args)
12 {
13 int [] number = new int [ 7 ] { 1 , 3 , 2 , 4 , 5 , 6 , 7 }; // create Datasourse
14 var n = from num in number where (num % 2 == 0 ) select num; // create Query
15 foreach ( int a in n) // Query execution
16 {
17 Console.WriteLine(a.ToString());
18 }
19 }
20 }
21 }
执行的结果:2,4,6
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Collections;
6
7 namespace LINQDemo
8 {
9 class Program
10 {
11 static void Main( string [] args)
12 {
13 int [] number = new int [ 7 ] { 1 , 3 , 2 , 4 , 5 , 6 , 7 }; // create Datasourse
14 var n = from num in number where (num % 2 == 0 ) select num; // create Query
15 foreach ( int a in n) // Query execution
16 {
17 Console.WriteLine(a.ToString());
18 }
19 }
20 }
21 }
首先建了一个int的数组作为数据源,其次创建了一个查询,最后执行了这个查询
现在来看看是怎么来执行这个过程的,如图所示:
每执行查询时,同要去查询的条件中找,符合条件的数据,大家下来可以一步步的调试,就要可以清楚的看到他的执行步骤了。
在上面一个示例是我们的数据源用的是一个int 的数组,刚来我们也说过数据源可以是XML ,数据库等
我们来看看XML:
using System.xml.Linq;
XElement element = XElement.Load(@"cao.xml");
用数据库作为数据源:
using System.Data.Linq;
DataContext dt = new DataContext(@"cao.mdf");
在以后的文章中我会讲到这两种数据源,这里就不做示例了;
接下来我们来看一个对ArrayList的一个查询示例:
新建一个Student类:
Code
1 namespace LINQDemo
2 {
3 public class Student
4 {
5 public string Name { get; set; }
6 public string Address { get; set; }
7 public int Score { get; set; }
8 }
9 }
10
接下来把这个实体添加到集合中,并查询:
1 namespace LINQDemo
2 {
3 public class Student
4 {
5 public string Name { get; set; }
6 public string Address { get; set; }
7 public int Score { get; set; }
8 }
9 }
10
1
ArrayList arr
=
new
ArrayList();
2 arr.Add(
3 new Student
4 {
5 Name = " caodaiming " ,
6 Address = " sichuan " ,
7 Score = 49
8 });
9
10 arr.Add(
11 new Student
12 {
13 Name = " lishi " ,
14 Address = " xi'an " ,
15 Score = 44
16 }
17 );
18
19 var querry = from Student student in arr select student;
20
21 foreach (Student st in querry)
22
23 Console.WriteLine(st.Name + " ----- " + st.Address + " ------- " + st.Score);
在这里我们还是按照了查询的基本步骤来做的,没有什么变化,只要记住这个步骤就OK了。
2 arr.Add(
3 new Student
4 {
5 Name = " caodaiming " ,
6 Address = " sichuan " ,
7 Score = 49
8 });
9
10 arr.Add(
11 new Student
12 {
13 Name = " lishi " ,
14 Address = " xi'an " ,
15 Score = 44
16 }
17 );
18
19 var querry = from Student student in arr select student;
20
21 foreach (Student st in querry)
22
23 Console.WriteLine(st.Name + " ----- " + st.Address + " ------- " + st.Score);
现在说说查询的表达试吧,其实这与我们数据库的语句有一点像,数据库的语句是select .....from .....,而Linq查询语句是from ..... in ..... where ......select 完全一我们SQL语句是相反的,Linq查询语句是面对象的查询语句,就是JAVA中Hibernate 中的HQL一样,都是一种面像对象的语句,如果有兴趣的朋友可以去对比一下这两者的不能之处;
好了就写到这里吧,以上的文章由自己的理解写出,但还是有很多的不足的地方,希望大家对我提出你们的看法,这是也是我边学边写的,在这里我借用了MSDN的文章来完成这遍文章的写作;