2016-12-09 9 views
0

私は文字列のリストを持っています。私はそれをより大きな文字列に連結しようとしています。文字列のリストからの文字列の連結

foreach (var item in dir3) 
    { 
      resultDirectionHtml = string.Join(",",item.html_instructions); 
    } 


await EmailSent(resultDirectionHtml); 

現在のところ、リストの最後の要素だけが送信されます。 どのようにして8つの文字列を連結して送信するのですか?

+1

「=」ではなく「+ =」を試してください。現在、追加するのではなく、ループの繰り返しごとに文字列全体を再割り当てしています。 – nbokmans

答えて

3

=の代わりに+=を使用してください。現在、追加するのではなく、ループの繰り返しごとに文字列全体を再割り当てしています。

だからあなたのコードは次のようになります。私はこのような何かだろう

foreach (var item in dir3) 
    { 
      resultDirectionHtml += string.Join(",",item.html_instructions); 
    } 


await EmailSent(resultDirectionHtml); 
+0

それは働いたように見えます!おかげで多くの – crystyxn

+0

唯一の問題は、それは私が述べたコンマと要素を分離しないのですか? – crystyxn

+0

どういう意味ですか?出力と期待される出力を表示できますか? – nbokmans

5

using System.Text; 
var builder = new StringBuilder(); 

foreach (var item in dir3) 
    { 
      builder.Append(item.html_instructions); 
      builder.Append("<br />"); 
    } 

resultDirectionHtml = builder.ToString(); 

あなたは、文字列に「追加」するたびに、あなたが終わるので、それはメモリ内に新しい文字列を作成しますあなたがそのリストにある多くのアイテムと同じくらい多くの文字列で、あなたはメモリを食べ続けます。 ループ内でそのようなコードを使用しないことを強くお勧めします。

5つ以上のアイテムStringBuilderを使用します。それ以上の価値はない。

+0

メモリフットプリントの少ない良い提案。 – Nair

2

あなたのコード投影の代わりに、foreachループ

resultDirectionHtml += string.Join(",",dir3.Select(i => i.html_instructions)); 
+0

選択のdir3.SelectMany instedを意味しますか? – gabba

+1

短くて甘い – Nair

+0

@gabba - いいえ、私は選択を意味しました。私は、各 'html_instructions'がプリミティブな値であり、別の列挙型ではないという印象を受けていました(selectmanyが適切でしょう)。 Joinは、Enumerableを受け取ります。たとえば、 'Console.WriteLine(string.Join("、 "、Enumerable.Range(0,10))です。(I => "こんにちは" + I)))を選択し、 ''う出力ハロー0、ハロー1、ハロー2、ハロー3、ハロー4、ハロー5、ハロー6、ハロー7、ハロー8、ハロー9' –

1

を使用することができますが、すべての繰り返しでresultDirectionHtmlの値を再割り当てするので、あなただけの最後の値を参照してください。あなたがLINQを使用して空想ならば、あなたは簡単にAggregate拡張子の助けを借りて、以下のように書くことができ、別のノートに+=代わりの=

foreach (var item in dir3) 
    { 
      resultDirectionHtml += string.Join(",",item.html_instructions); 
    } 

を使用しています。

string[] words = { "a", "aa", "aaa" }; 
var output = words.Aggregate((current, next) => current + ", " + next); 
//The value of output will be a, aa, aaa