2017-06-06 5 views
1

私はList<List<Event>>のようなオブジェクトのリストを持っています。オブジェクトリストのリストを文字列に変換する

ToString()を無効にすると、各内部リストがコマンドプロンプトの1行に表示されます。

public override string ToString(List<List<Event>>) 
{ 
    return ? 
} 
+0

ないあなたはこれを使っているが、JSONやYAMLにして、それをシリアル化する価値があるかもしれないものを確認してください? –

+0

@KevinSmith:そうは思わない。これらのイベントは、有限状態マシンに対応する一部の文字列です。私が必要とするのは、それらを印刷する方法だけです。シリアライゼーションはこの作業には非常に複雑です。 – Roboticist

答えて

1
public override string ToString(List<List<Event>> lle) 
{ 
    StringBuilder res=new Stringbuilder(your_guess_of_lenght_here); 
    foreach(List<Event> le in lle){ 
     foreach(Event e in le){ 
      res.Append(e+"any_separator_of_elements"); 
     } 
     res.Append("\n"); 
    } 
    return res.ToString(); 
} 

このような何か?私はあなたのイベント文字列の表現を知らない、あなたはそれを変更することができます。

+0

'res.Append(" \ n ");'を 'res.AppendLine();' – Tdorno

+0

または 'Environment.NewLine'(これは実際には' AppendLine() 'によって貼り付けられます) – Kartoffel

+0

もしあれば'res'変数の値を推測しませんか? – Roboticist

3
public override string ToString(List<List<Event>> events) 
{ 
    return string.Join(", ", 
     events.SelectMany((list) => list) 
      .Select((ev) => ev.ToString())); 
} 
  1. Eventは再使用して.ToString()
  2. カンマ区切り(と1つの文字列に文字列の配列に参加を変更することができる文字列に変換リストのリストを取り、.SelectMany()
  3. でそれを平ら)。 1

編集は、基本メソッドのシグネチャは、あなたはおそらく、あなたのクラスのフィールドまたはプロパティを参照すると、別string ToString(List<List<Event>> events)を定義する必要がない任意のパラメータなしのstring ToString()であることを考えます。

public class SO 
{ 

    List<List<Event>> events; 

    public override string ToString() 
    { 
     return string.Join(", ", 
      events.SelectMany((list) => list) 
       .Select((ev) => ev.ToString())); 
    } 
} 
+0

手順の簡単な説明を追加しました。 – ja72

+1

'.ToArray()'は不要です。 – Magnus

+0

あなたは正しいです。私は答えを編集しています。 – ja72

0
public override string ToString(List<List<Event>> listOflistOfEvents) 
    { 
     StringBuilder result = new StringBuilder(); 
     listOflistOfEvents.ForEach(delegate(List<Event> listOfEvents) 
     { 
      result.AppendLine(); 
      listOfEvents.ForEach(events => result.Append(events + ",")); 
     }); 
     return result.ToString(); 
    } 
関連する問題