用最簡單的術語來說,x是你聲明的變量。
因此它讀取「x使得x是」 ...無論您試圖根據您的查詢的輸入和輸出參數傳達的表達式。
爲了給你舉個例子:
var sorted = list.Where(x => x.Name == "Foo").ToList();
該讀作 「x滿足x等於的Foo」。這將返回與Foo相等的Name屬性的所有列表。
爲了進一步解釋這一點,讓我們看看Enumerable方法的重載方法之一是「Where」。根據MSDN:
實際的語法是:
Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
再舉一個例子,您聲明整數的列表。我們的目標是讓所有的偶數:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
我們詢問誰是偶數的所有整數,我們將使用的重載版本一凡擴展方法,使用lambda語法。它說:
所以這裏的來源是:
numbers.Where();
由於 「數字」 變量是TSource的IEnumerable的。 此處的TSource是任何類型爲「T」的IEnumerable或任何類型的實體。
現在最後一部分是它接受一個Func。 Func是預定義的委託類型。它爲我們提供了一種以通用和簡單的方式存儲匿名方法的方法。爲了進一步理解這一點,讓我們再讀一遍。它說它會接受源,並且將輸出布爾結果。
現在,讓我們創建一個接受TSource,在這種情況下,FUNC鍵整數作爲我們的榜樣,將輸出布爾結果:
Func<int, bool> fncParameter = x => x % 2 == 0;
現在我們可以傳遞into our:
numbers.Where
這將是:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Func<int, bool> fncParameter = x => x % 2 == 0;
IEnumerable<int> result = numbers.Where(fncParameter);
或簡稱:
ist<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
IEnumerable<int> result = numbers.Where(x => x % 2 == 0);
我認爲你的問題可能** **是 「?什麼是lambda表達式」 –
「x」只是一個標識符 –
MS文檔:[Lambda表達式(C#編程指南)](https://msdn.microsoft.com/en-us/library/bb397687.aspx)x被稱爲輸入參數 – Nkosi