=>Lambda 表達式由 C# 2.0 匿名方法演進而來,是 LINQ 的核心基礎。語法:參數 => 運算式。
public class Person
{
public string Name { get; set; }
public string NickName { get; set; }
public int Age { get; set; }
}
List<Person> people = new List<Person>
{
new Person { Name = "小兵", NickName = "網魂小兵", Age = 23 },
new Person { Name = "青青", NickName = "QQing", Age = 22 }
};
// 取得 Age=23 的 Person
IEnumerable<Person> results = people.Where(p => p.Age == 23);
// 計算平均年齡
int perAge = people.Average(p => p.Age);
IEnumerable<Person> results = people.Where(delegate(Person p) { return p.Age == 23; });
int perAge = people.Sum(delegate(Person p) { return p.Age; });
Lambda 更簡潔,編譯器自動推斷型別。
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
foreach (TSource s in source)
if (predicate(s)) yield return s;
}
Func<TSource, bool> 為委托,最後一個型別參數為回傳值,前面為輸入參數。