web-dev-qa-db-ja.com

リストをC#の文字列に変換する

リストをC#の文字列に変換するにはどうすればよいですか?

ListオブジェクトでtoStringを実行すると、次の結果が得られます。

System.Collections.Generic.List`1 [System.String]

155
IAdapter

たぶんあなたはやろうとしている

string combindedString = string.Join( ",", myList.ToArray() );

「、」は、リスト内の要素を分割するものに置き換えることができます。

305

私は直感で行き、リストの各要素でToStringを呼び出した結果を連結したいと仮定します。

var result = string.Join(",", list.ToArray());
50
ChaosPandion

string.Join を使用できます。

List<string> list = new List<string>()
{
    "Red",
    "Blue",
    "Green"
};

string output = string.Join(Environment.NewLine, list.ToArray());    
Console.Write(output);

結果は次のようになります:

Red    
Blue    
Green

Environment.NewLine の代替として、選択した文字列ベースの行区切り文字に置き換えることができます。

15
eandersson

単純な結合よりも少し複雑なものが必要な場合は、LINQを使用できます。

var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");

["A"、 "B"、 "C"]を取り、 "(a)(b)(c)"を生成します

14
James Gaunt

String.Join(" ", myList)またはString.Join(" ", myList.ToArray())。最初の引数は、部分文字列間の区切り文字です。

var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"

.NETのバージョンによっては、最初にリストでToArray()を使用する必要がある場合があります。

13
Markus Johnsson

参照型の.ToString()メソッドは、派生型でオーバーライドしない限り、通常、System.Object.ToString()に解決されます(組み込み型の拡張メソッドを使用する場合があります)。このメソッドのデフォルトの動作は、呼び出された型の名前を出力することです。だからあなたが見ているのは期待される動作です。

これを実現するには、string.Join(", ", myList.ToArray());のようなものを試すことができます。これは余分な手順ですが、少し簡単にするためにSystem.Collections.Generic.List<T>の拡張メソッドに入れることもできます。このようなもの:

public static class GenericListExtensions
{
    public static string ToString<T>(this IList<T> list)
    {
        return string.Join(", ", list);
    }
}

(これはフリーハンドでテストされていないコードであることに注意してください。現時点では便利なコンパイラーはありません。少し試してみてください。)

8
David

List<string>があるので、連結したい場合は

string s = string.Join("", list);

(少なくとも.NET 4.0では)動作します。最初のパラメーターは区切り文字です。したがって、カンマ区切りなどもできます。

また、リストを作成するのではなく、StringBuilderを使用して連結を実行することも検討してください。

8
Marc Gravell

わかりにくいですが、おそらく次のようなものを探しています:

var myString = String.Join(String.Empty, myList.ToArray());

これにより、リスト内の各アイテムでToString()メソッドが暗黙的に呼び出され、それらが連結されます。

3
Daniel Schaffer

リスト内のアイテムを長い文字列に変換する場合は、String.Join("", myList)を実行します。フレームワークの一部の古いバージョンでは、2番目のパラメーターとしてIEnumerableを渡すことができないため、.ToArray()を呼び出してリストを配列に変換する必要がある場合があります。

2
mattmc3

あなたの質問に対する直接の答えは、他の人が述べたようにString.Joinです。

ただし、何らかの操作が必要な場合は、Aggregateを使用できます。

List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");

string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();
1
Lijo

このメソッドは、テキストファイルからデータを取得して配列に保存し、文字列変数に割り当てるときに役立ちました。

string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");  
string marRes = string.Join(Environment.NewLine, lines.ToArray());

誰かが助けてくれることを願っています!!!!

0
PatsonLeaner