大家好,今天是第 13 天 …
LINQ 常常會搭配 Lambda 語法使用,因此在今天進行簡單的介紹。
可用來建立匿名函式。透過委派的方式傳入需要的資料。以下是一個基本的語法,從中取得集合 emp 裡國家為台灣的資料,並以匿名型別呈現:
var q = emp.Where(x => x.country.Equals("taiwan"));
其實效果相當於以下的匿名函式:
var anonymous = emp.Where(delegate (Employee x) {return x.country.Equals("taiwan"); });
相比兩段語法,會發現 Lambda 語法在傳遞參數時,不一定需要明確的指定參數型別。
int a = 3, b = 5;
Func<int, int, int> rect = (x, y) => x * y; // Func<T, T, TResult> 委派
Console.WriteLine(rect(a, b));
Func<int, string, bool> isEqualLength = (int x, string s) => s.Length == x;
Console.WriteLine(isEqualLength(3, "super"));
{}
包住程式,稱為 Lambda Expression;有多行時需用 {}
包住,稱為 Lambda Statements。using System;
using System.Linq;
public class Program
{
// 員工類別
public class employee{
public string name;
public string country;
public employee(string n, string c){
this.name = n;
this.country = c;
}
}
public static void Main()
{
// 建立測試資料
employee[] emp = new employee[3];
emp[0] = new employee("jacky", "taiwan");
emp[1] = new employee("annie", "america");
emp[2] = new employee("jeff", "taiwan");
// 使用 Lambda 語法查詢國家中等於 taiwan 的資料
var q = emp.Where(x=>x.country.Equals("taiwan"));
foreach(var t in q.AsEnumerable()){
Console.WriteLine(t.name + ": " + t.country);
}
}