21

C#で、List<MyObj>whereMyObjがオーバーライドされたToString()メソッドを持つカスタムクラスである場合、リスト内の各MyObjオブジェクトを簡単に文字列に変換できます。

これを区切り文字で結合するにはどうすればよいですかList<MyObj>。たとえば、パイプ(|)を1つの文字列に結合します。

したがって、ToStringメソッドがそれぞれAAA、BBB、CCCを生成する3つのMyObjオブジェクトがある場合。AAA | BBB|CCCという単一の文字列を作成します。

のような単純なタイプのリストの場合、List<string>これは単純に次のように実行しますString.Join("|", myList.ToArray());。それに似たことができる方法はありますか?または、オブジェクトリストを繰り返し処理し、StringBuilderを使用してリスト内の各オブジェクトのToStringを一緒に追加する必要がありますか?

4

2 に答える 2

60

.NET 4では、次を使用できます。

var x = string.Join("|", myList);

ただし、.NET 3.5にはそれほど多くのオーバーロードはありませんstring.Join。文字列変換を実行し、それを明示的に配列に変換する必要があります。

var x = string.Join("|", myList.Select(x => x.ToString()).ToArray());

利用可能な過負荷を比較します。

于 2012-05-10T19:06:27.187 に答える
1

ありがとう、ジョン・スキート。より複雑なオブジェクトの場合、以下を使用します。

string.Join("-", item.AssessmentIndexViewPoint.Select(x =>
              x.ViewPointItem.Name).ToList())
于 2021-02-25T09:11:46.957 に答える