リストをC#の文字列に変換するにはどうすればよいですか?
ListオブジェクトでtoString
を実行すると、次の結果が得られます。
System.Collections.Generic.List`1 [System.String]
たぶんあなたはやろうとしている
string combindedString = string.Join( ",", myList.ToArray() );
「、」は、リスト内の要素を分割するものに置き換えることができます。
私は直感で行き、リストの各要素でToString
を呼び出した結果を連結したいと仮定します。
var result = string.Join(",", list.ToArray());
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
の代替として、選択した文字列ベースの行区切り文字に置き換えることができます。
単純な結合よりも少し複雑なものが必要な場合は、LINQを使用できます。
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
["A"、 "B"、 "C"]を取り、 "(a)(b)(c)"を生成します
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()を使用する必要がある場合があります。
参照型の.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);
}
}
(これはフリーハンドでテストされていないコードであることに注意してください。現時点では便利なコンパイラーはありません。少し試してみてください。)
List<string>
があるので、連結したい場合は
string s = string.Join("", list);
(少なくとも.NET 4.0では)動作します。最初のパラメーターは区切り文字です。したがって、カンマ区切りなどもできます。
また、リストを作成するのではなく、StringBuilderを使用して連結を実行することも検討してください。
わかりにくいですが、おそらく次のようなものを探しています:
var myString = String.Join(String.Empty, myList.ToArray());
これにより、リスト内の各アイテムでToString()メソッドが暗黙的に呼び出され、それらが連結されます。
リスト内のアイテムを長い文字列に変換する場合は、String.Join("", myList)
を実行します。フレームワークの一部の古いバージョンでは、2番目のパラメーターとしてIEnumerableを渡すことができないため、.ToArray()を呼び出してリストを配列に変換する必要がある場合があります。
あなたの質問に対する直接の答えは、他の人が述べたように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();
このメソッドは、テキストファイルからデータを取得して配列に保存し、文字列変数に割り当てるときに役立ちました。
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
誰かが助けてくれることを願っています!!!!