C# LINQ表达式而不是嵌套的foreach循环

C# LINQ表达式而不是嵌套的foreach循环,c#,.net,linq,C#,.net,Linq,所以我有一个列表,它的每个元素都是一个字符串数组 List<string[]> TokenList = new List<string[]>(); 现在我正试图在我的程序中使用LINQ,我想知道将使用什么样的LINQ查询来实现相同的预期结果 Console.WriteLine(String.Join(Environment.NewLine, pro.TokenList.SelectMany(s => s) )); 或者 尝试这样做: Console.W

所以我有一个列表,它的每个元素都是一个字符串数组

List<string[]> TokenList = new List<string[]>();
现在我正试图在我的程序中使用LINQ,我想知道将使用什么样的LINQ查询来实现相同的预期结果

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

尝试这样做:

Console.WriteLine(String.Join(Environment.NewLine, 
    pro.TokenList.SelectMany(s => s)
));
这应该行得通。如果未添加注释:)


然而,这里没有多少林克;),正如评论中所指出的,更简洁:)同样,正如Servy在另一个答案下所指出的,这还有一个优点,即不需要再次连接所有字符串并将其存储在内存中。

我宁愿保持简单:

// 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);

有趣的是,人们将许多语句组合在一起,但可读性较差。

嗯,我很欣赏答案,但它是否可以以查询的形式出现?@WinCoder:查询只能用于查询数据,而不会产生副作用。或者你的意思是查询理解语法,而不是直接扩展方法调用?是的,查询理解syntax@WinCoder:给你。ahhh现在最好理解它。这比
字符串有优势。加入
解决方案,不同时将所有字符串放入内存;它将它们流式传输到输出,从而导致更早地看到较早的项目,而不是等待最后一个项目被处理。
Console.WriteLine(String.Join(Environment.NewLine, 
    pro.TokenList.SelectMany(s => s)
));
pro.TokenList.ForEach(temp => Array.ForEach(temp, Console.WriteLine));  
// 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);