簡體   English   中英

使用Lambda表達式操作數組的索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM