C#中的Where和Lambda表示式
阿新 • • 發佈:2019-02-12
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。請尊重原作者版權