0

だから私は、各要素が文字列配列であるリストを持っています

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 に答える