簡體   English   中英

LINQ表達式而不是嵌套的foreach循環

[英]LINQ expression instead of nested foreach loop

所以我有列表,其每個元素是一個字符串數組

List<string[]> TokenList = new List<string[]>();

我想為列表中的每個數組顯示數組中的每個元素。 為此,我使用了嵌套的foreach循環。

foreach (var temp in pro.TokenList)
        {
            foreach (var s in temp)
            {
                Console.WriteLine(s);
            }
        }

現在,我正在嘗試在程序中使用LINQ,我想知道哪種LINQ查詢將用於實現相同的期望結果。

我寧願保持簡單:

// select all sub-strings of each TokenList into 1 big IEnumerable.
var query = pro.TokenList.SelectMany(item => item);

// display all strings while iterating the query.
foreach(var s in query)
    Console.WriteLine(s);

人們組合了許多語句很有趣,但是它的可讀性較差。

Console.WriteLine(String.Join(Environment.NewLine, 
    pro.TokenList.SelectMany(s => s)
));

要么,

Console.WriteLine(String.Join(Environment.NewLine, 
    from arr in pro.TokenList
    from s in arr
    select s
));

嘗試這樣做:

Console.WriteLine(String.Join(Environment.NewLine, 
    pro.TokenList.SelectMany(s => s)
));

這應該工作。 如果沒有添加評論:)

pro.TokenList.ForEach(temp => Array.ForEach(temp, Console.WriteLine));  

但是,這里的LINQ並不多;),如注釋中所述,只是更加簡潔:)另外,正如Servy在另一個答案下指出的那樣-這也具有不將所有字符串再次存儲在內存中的優點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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