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

时间:2013-08-26 19:42:44

标签: c# .net linq

所以我有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 个答案:

答案 0 :(得分:7)

我宁愿保持简单:

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

人们将许多陈述结合起来很有趣,但它的可读性会降低。

答案 1 :(得分: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
));

答案 2 :(得分:2)

尝试这样做:

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

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

答案 3 :(得分:-2)

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

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