標籤:style blog color os io for
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則是一個lambdaRegex。
Where文法格式:
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source,Func<TSource, bool> predicate)
lambdaRegex:
運算式位於=>運算子的右側 (input parameters)=>expression。實際上是一個匿名委託。比如:
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>。