c#中Where和Lambda表達式


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。實際上是一個匿名委托。比如:

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>。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM