LINQ 查詢簡介
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
首先建了一個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 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了。
現在說說查詢的表達試吧,其實這與我們資料庫的語句有一點像,資料庫的語句是select .....from .....,而Linq查詢語句是from ..... in ..... where ......select 完全一我們SQL語句是相反的,Linq查詢語句是面對象的查詢語句,就是JAVA中Hibernate 中的HQL一樣,都是一種面像對象的語句,如果有興趣的朋友可以去對比一下這兩者的不能之處;
好了就寫到這裡吧,以上的文章由自己的理解寫出,但還是有很多的不足的地方,希望大家對我提出你們的看法,這是也是我邊學邊寫的,在這裡我借用了MSDN的文章來完成這遍文章的寫作;