0

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

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

我想为列表中的每个数组显示数组中的每个元素。为此,我使用嵌套的 foreach 循环。

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

现在我正在尝试在我的程序中使用 LINQ,我想知道将使用哪种 LINQ 查询来实现相同的预期结果。

4

4 回答 4

8

我宁愿保持简单:

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

人们将许多语句组合在一起很有趣,但它的可读性会降低。

于 2013-08-26T19:47:30.887 回答
4
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
));
于 2013-08-26T19:44:24.790 回答
2

尝试这样做:

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

这应该有效。如果它没有添加评论:)

于 2013-08-26T19:45:13.340 回答
-2
pro.TokenList.ForEach(temp => Array.ForEach(temp, Console.WriteLine));  

但是这里没有太多 LINQ ;),正如评论中所指出的,只是更简洁 :) 此外,正如 Servy 在另一个答案下所指出的那样 - 这也具有不再将所有字符串加入和存储在内存中的优点。

于 2013-08-26T19:46:00.767 回答