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
