[英]Get the name of the lambda expression with the index from the expression's array
[英]Manipulating array's index using Lambda Expression
我正在閱讀有關LINQ的一些教程,碰到了以下代碼,盡管我知道Author正在嘗試獲取所有第三個元素,但我無法理解這里的'n'在做什么。它清楚地表明我缺乏對Lambda表達式的了解。(如果有人可以為初學者提供掌握鏈接的方法,那就太好了,截至目前,當我嘗試找到它們時,我從來沒有發現它們具有扎實的基礎知識,而結果是對理解的拙劣理解。 在下面的數組中,每三個元素都以“日元”(貨幣)為單位。
static double[] ExchangedPrices = {827.70, 604.50, 111869.70,
1869.00, 1,365.00, 252609.00,
521.36, 380.77, 70465.88,
455.68, 332.80, 61588.48,
2018.34, 1474.07, 272793.66,
920.26, 672.10, 124379.86,
1873.45, 1368.25, 253210.45,
149.34, 109.07, 20184.66,
455.68, 332.80, 61588.48,
525.28, 383.63, 70995.16,
9.08, 6.63, 1226.96,
311.50, 227.50, 42101.50};
IEnumerable<double> yenQuery = ExchangedPrices.Where((n, index) => index%3 == 0);
使用Where
將本質上循環遍歷數組並返回滿足給定條件的元素。
n代表元素本身, index代表每次迭代時元素的索引 。
因此,where語句逐個遍歷數組的每個元素,並每次測試該元素的索引是否可被3整除。
msdn Lambda文章是一個更好地了解Lambda的良好開始。
ExchangedPrices.Where((n, index) => index%3 == 0);
這行代碼正在創建n和index的lambda表達式。 n表示double的值,而index表示ExchangedPrices數組中該double的索引。 您可以在lambda表達式內使用n,就像使用index一樣。
ExchangedPrices.Where((n, index) => n%3 == 0);
此行將為您提供數組中所有可被3整除的值,而不是按索引對數組中的每個第3個元素進行除數。
這里n
代表ExchangedPrices
數組中的每個項目。 index
是一個變量,它保存序列的(從零開始的)索引值,並使用它來檢查條件index%3==0
條件。 因此,當代碼運行時,將在迭代中的每個項目上再次評估此條件,並將返回true或false。 LINQ Where
子句使用該謂詞,並最終根據此if條件的結果返回原始數據的子集。 因此,如果謂詞表達式返回true,則將使用相應的項(該迭代時n
值)來構建將返回的子集數據。
由於if條件表達式將在循環中評估37個項目時返回12次true
,因此它將從原始數組中獲得這12個項目並將其存儲到您的yenQuery
變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.