LINQ學習紀錄(一)

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

 

先記一些簡單的….比較複雜的明天再寫....