委托:
//delegate 返回值 委托名(參數); //委托不能在方法中定義 ////實例化委托,並賦值 //委托名 實例名 = new 委托名(函數名)、lambda表達式; //使用委托實例,就像使用普通的函數一樣
Lambda表達式:
個人認為,和某些語言中的閉包類似,即表達式相當於一種匿名函數(可以賦值給委托delegate),例如lambda 表達式 x => x * x —— "=>"運算符的左邊是輸入參數,右邊是返回值。
delegate int del(int i); private void Form1_Load(object sender, EventArgs e) { del aDelegate = x => x * x; label1.Text = aDelegate(10) + ""; //輸出100 }
LINQ to SQL、LINQ to XML、LINQ to DataSet、LINQ to Objects。
基本使用:
1、Query語法:
int[] numbers = { 5, 10, 8, 3, 6, 12 }; //數據源必須是實現了IEnumerable接口的類型 //基本語法結構(這條語句不會馬上執行,只有當queryNum這個變量被使用時,才會執行這條語句): IEnumerable<int> queryNum = from num in numbers where num % 2 == 0 orderby num select num; label1.Text = ""; foreach (var i in queryNum) { label1.Text += i + " "; }
2、Method語法:
//升序方法 IEnumerable<int> MethodNum = numbers.Where(num => num % 2 == 0).OrderBy(num => num); label1.Text = ""; foreach (var i in MethodNum) { label1.Text += i + " "; }
LINQ的幾種基本操作:
Select方法:
避免了反射的開銷。