C# LINQ查詢之對象


LINQ是一組查詢技術的統稱,其主要思想是將各種查詢功能直接集成到C#語言中,可以對 對象、XML文檔、SQL數據庫、外部應用程序等進行操作。

這里面講的簡單的幾個子句,

必須以from子句開頭,以select或group子句結尾。

例子:

int []  nums={0,1,2,3,4,5};

var  q  = from n in nums // 表示查詢數據的通用類型。

where  n%2==0

select n;

一般用foreach()來輸出結果。

foreach( var v in q){

Console.WriteLine(v.name);

}

結果為:0 2 4

--------------------------

public class  Student{

private string name;

public string Name  

 {        get    {       return name;    }    

            set    {      name = value;    }  }    //可以在set里面寫if語句 ,比如;set{if(name="chen") {name=null;}else{ name=value;}

或者簡寫 public string name{get;set;}

public int age{get;set;}          }

...

List<Student> students =new List<Student>()

{       new Student{name ="chen",age=24},

         new Student{name ="li",age=24},

        new Student{name ="zhang",age=23}   }

var q = from t in students

select  t;

---------------------------------

 where  子句

var q = from t in students

where t.name=='chen' && t.age=24

select  t;

----------------------------------

orderby  子句  用於排序

var q = from t in students

orderby t.age descending,t.name  ascending   //按照age 降序  name 升序排列。

select  t;

---------------------------------------

group  by子句 //用於分組

var q = from t in students
group t by t.age;

foreach (var v in q)//必須使用嵌套的foreach循環
 { 

 Console.WriteLine(v.key);//輸出按照要求排序的鍵值 age
 foreach (var v1 in v)
 {
 Console.WriteLine(”{0}{1}“,v1.姓名,v1.年齡);
} }

結果為:

    24

    chen

    li

    23

    zhang

---------------------------------------------

select   子句

 var q = from t in students
 select new
 {
姓名 = t.name,
 年齡 = t.age
};
  foreach (var v in q)
{

Console.WriteLine(”{0}{1}“,v.姓名,v.年齡);

}

--------------------------------

join    in   操作符

需要定義另一個集合,比如:

 public class People
    {

        public string name { get; set; }

        public string sex { get; set; }
    }

。。。。

  List<People> peoples = new List<People>()

  {       new People{name ="chen",sex="boy"},

           new People{name ="li",sex="girl"},

            new People{name ="zhang",sex="girl"}   };

          var q = from t in students

               join c in peoples on t.name equals c.name 

                 select new { 姓名 = c.name, 年齡 = t.age, 性別 = c.sex };//將兩個對象的數據聯系在一起,name一樣時候相對應。   

                foreach (var v in q)
                {
                    Console.WriteLine("{0}{1}{2}",v.姓名,v.年齡,v.性別);
                }

 結果為:  chen  24  boy

              li        24  girl

              zhang 23  girl

---------------------------------------------------------------------------------

into  關鍵字

一般在 group里面用。

var q = from t in students
group t by t.age   into groupstu  //把之前的兩個group ,into成一個變量

where   groupstu.Count()>=2 // 對這個變量進行篩選,即 當groupstu里的成員大於或等於2時。

select new { 姓名=t.name, 年齡=t.age}

 -------------------------------------------------------

let 關鍵字 // 中間變量,存儲一個子表達式過程的變量。

比如: string[]    str={"abc  def"};

var q= from v in str

let word= v.Split(' ');

from  vv in word

let  upword=vv.ToUpper();//將字母大寫

select  upword;

結果為:ABC

           DEF

 

 

        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM