1. 程式人生 > >C#中的Where和Lambda表示式

C#中的Where和Lambda表示式

1 2 3 4 5 6 7 8 9 10 11 List<string> listString = new List<string>(); listString.Add("abc"); listString.Add("456"); listString.Add("bbb"); listString.Add("iiiiiiii"); var retList = listString.Where(u => u.Length > 4); foreach (string str in retList) { Console.WriteLine(
"str = {0}", str); }

之前當看到c#裡有Where的時候,總是不明覺厲,也影響了閱讀程式碼的流暢性。

這裡的Where是Linq的一種查詢語法,而u => u.Length > 4則是一個lambda正則表示式。

Where語法格式:

public static IEnumerable<TSource> Where<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, bool> predicate
)

lambda正則表示式:

表示式位於=>運算子的右側  (input parameters)=>expression。實際上是一個匿名委託。比如:

1 2 3 4 5 6 7 8 9 delegate int add(int i); static void Main(string[] args) { add myDelegate = x => x + 5; int ret = myDelegate(5); Console.WriteLine("ret = {0}", ret); Console.ReadLine(); }

 文章開頭程式碼中listString.Where(u => u.Length > 4);裡面的u => u.Length > 4實際上就是一個匿名委託,用這個匿名委託去過濾Source裡面的每一個元素,剩下的返回IEnumerable<TSource>。


原文轉自:http://www.cnblogs.com/chunyih/p/3859453.html 原作者為 chunyih。請尊重原作者版權