linq查詢表示式的子句如select,where,from等都是比較簡單的子句,相信各位多練習練習,再結合msdn的例子,基本上是可以理解的,因此,本文只挑幾個有代表性的,以及有些難理解的子句來簡述一下。
一、where子句。
在sql中,篩選語句常用的表示方式如「select * from users where uname = 'dmin'」,這個sql語句就帶有where子句,其實,在linq中也類似,只不過放的位置不一樣。請看下面的例子。
int source1 = new int ;
// 篩選出大於20的數字
var res =
from n in source1
where n > 20
select n;
debug.write("\n\n大於20的整數有:\n");
foreach (int x in res)
輸出的結果為:
大於20的整數有:
50 22 38 91
復合條件的寫法與if等判斷語句一致,linq遵循c#語法,再看看下面乙個例子,從字串陣列中選出以t開頭並且長度大於等於3的。
string source2 = new string;
var res2 =
from s in source2
where s.startswith("t") && s.length >= 3
select s;
debug.write("\n\n以「t」開頭並且長度在3以上的字串有:\n");
foreach (string str in res2)
輸出結果如下:
以「t」開頭並且長度在3以上的字串有:
time tikkyode
二、group子句。
這是乙個有點兒難度的子句,很多朋友可能搞不清楚它查詢後返回的是什麼。這樣,我們還是用乙個例子來說明吧。
首先,宣告乙個類,包含兩個字段:學生姓名和成績。
public class student
public int score
}
接著,我們把學生的名字以首字母進行分組。
student source3 = new student,
new student,
new student,
new student,
new student,
new student,
new student
};var res3 =
from st in source3
group st by st.name[0];
debug.write("\n\n查詢結果變數的型別:" + res3.gettype().name + "\n");
debug.write("\n分別輸出各分組的資訊:\n");
foreach (var g in res3)
除錯執行,然後注意檢視「輸出視窗」中的內容。
查詢結果變數的型別:groupedenumerable`3
分別輸出各分組的資訊:
資料型別:grouping
資料型別:grouping
資料型別:grouping
因此,我們可以得到這樣的結果:
1、分組查詢返回乙個groupedenumerable;
2、每個groupedenumerable中包含n個grouping。
我們發現這些類在物件瀏覽器中找不到,groupedenumerable是內部類,但grouping通過反射也沒找著,那它們的結構到底如何?
現在,我們通過斷點除錯,進一步了解它們。
從截圖中我們看到,igrouping有乙個key屬性,其實它就是儲存我們用來進行分組的鍵,怎麼理解呢?
回到上面的例子,我們以什麼作為分組的依據?對,姓名欄位的第乙個個字母,其實是char型別,因此,比如上面的,「z」就是乙個組的鍵,在這個組裡面,都是以z開頭的物件的集合。
在實現igrouping的類中,顯然會實現getenumerator方法,也就是說我們可以把它foreach出來,上圖中看到,每個元素(telement)說白了就是已經被分組的物件,上例中即為student物件。
而每個組中其實包含lookup類。
呵呵,有些混亂了,我們可以這樣總結:
執行了linq分組查詢後,得到的所有分組的集合a,而a中的每個成員就是乙個組g1、g2……而g1中就是被分到該組的物件o1、o2……可能用乙個圖來表示會直觀一點。
現在,我們把上面的**改一下。
foreach (var g in res3)
}
輸出結果如下:
z
姓名:zhangfeng
成績:60
姓名:zhongning
成績:65
l姓名:liuxiaoshan
成績:75
姓名:liangwutai
成績:80
姓名:lanao
成績:79
f姓名:funan
成績:71
姓名:fangtianhao
成績:88
LINQ簡記(3) 子句
linq查詢表示式的子句如select,where,from等都是比較簡單的子句,相信各位多練習練習,再結合msdn的例子,基本上是可以理解的,因此,本文只挑幾個有代表性的,以及有些難理解的子句來簡述一下。一 where子句。在sql中,篩選語句常用的表示方式如 select from users ...
LINQ簡記(3) 子句
linq查詢表示式的子句如select,where,from等都是比較簡單的子句,相信各位多練習練習,再結合msdn的例子,基本上是可以理解的,因此,本文只挑幾個有代表性的,以及有些難理解的子句來簡述一下。一 where子句。在sql中,篩選語句常用的表示方式如 select from users ...
LINQ簡記(3) 子句
linq查詢表示式的子句如select,where,from等都是比較簡單的子句,相信各位多練習練習,再結合msdn的例子,基本上是可以理解的,因此,本文只挑幾個有代表性的,以及有些難理解的子句來簡述一下。一 where子句。在sql中,篩選語句常用的表示方式如 select from users ...