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