C# LINQ查詢之對象

來源:互聯網
上載者:User

標籤:

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

 

 

        

 

C# LINQ查詢之對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.