LINQ學習紀錄(一)
知道LINQ以及學習LINQ差不多一個月的時間,以前都是用T-SQL來操作資料庫
雖然基本的語法都知道了,但是用起來還是沒有很熟,所以這裡就來記錄一下
比較常用的語法以及學習的心得。
可以參考:101 LINQ Samples
- take() 找出查詢的幾筆
string[] list = {"1","2","3","4","5","6","7","8","9" };
var answer = (from n in list select n).Take(3);
foreach(var n in answer){
Console.WriteLine(n);
}
查詢的結果是:1 、2、3
- Skip() 跳過查詢的幾筆
string[] list = {"1","2","3","4","5","6","7","8","9" };
var answer = (from n in list select n).Skip(3);
foreach(var n in answer){
Console.WriteLine(n);
}
查詢的結果是:4、5、6、7、8、9
- TakeWhile() 找出資料直到不符合條件時
int[] list = {1,2,3,4,5,6,7,8,9 };
var answer = list.TakeWhile(n=>n<5);
foreach(var n in answer){
Console.WriteLine(n);
}
查詢的結果是:1 、2、3、4
可以想成,n代表從資料集合中一個一個拿出來的元素,當元素<5時,就繼續抓下一個元素。
直到n<5為false時停止。
- SkipWhie() 跳過資料直到不符合條件時
int[] list = {1,2,3,4,5,6,7,8,9 };
var answer = list.SkipWhile(n=>n<5);
foreach(var n in answer){
Console.WriteLine(n);
}
查詢的結果是:5、6、7、8、9
可以想成,n代表從資料集合中一個一個拿出來的元素,當元素<5時,就跳過然後抓下一個元素比。
直到n<5為false時才停止跳過
- Reverse() 把順序顛倒
int[] list = {1,2,3,4,5,6,7,8,9 };
var answer = list.Reverse();
foreach (var n in answer)
{
Console.WriteLine(n);
}
查詢的結果是:9、8、7、6、5、4、3、2、1
- OfType<T>() 抓取資料中符合T型態的資料
Object[] list = {"1",2,"3",4,"5",6,"7",8,"9" };
var answer = list.OfType<int>();
foreach (var n in answer)
{
Console.WriteLine(n);
}
查詢的結果是:2、4、6、8
因為1、3、5、7、9我改為字串,而我要用的OfType<int>() 是要抓int的型別,因此答案如上
- ElementAt() 抓資料中的某一個index位置
string[] list = {"1","2","3","4","5","6","7","8","9" };
var answer = (from n in list select n).ElementAt(3);
foreach (var n in answer)
{
Console.WriteLine(n);
}
查詢的結果是:4
index從0開始,所以我抓index為3的元素,答案如上
- Enumerable.Range(x,y) 從x開始跑y次
var answer = (from n in Enumerable.Range(100, 5) select n);
foreach (var n in answer)
{
Console.WriteLine(n);
}
查詢的結果是:100、101、102、103、104
- Enumerable.Repeat(x, y) 重複x y次
var answer = (from n in Enumerable.Repeat(100, 5) select n);
foreach (var n in answer)
{
Console.WriteLine(n);
}
查詢的結果是:100、100、100、100、100
- Any() 查詢的資料中,只要有一個符合條件,就返回true
string[] list = {"1","2","3","4","5","6","7","8","9" };
bool ans = list.Any(n=>n.Equals("4"));
Console.WriteLine(ans);
查詢的結果是:true
- All() 查詢的資料中,要全部符合條件才返回true,否則false
string[] list = {"1","2","3","4","5","6","7","8","9" };
bool ans = list.All(n=>n.Equals("4"));
Console.WriteLine(ans);
查詢的結果是:false
先記一些簡單的….比較複雜的明天再寫....