IListまたは
IEnumerable
String.Join(...)
は、string[]
を操作するので、IList<string>
やIEnumerable<string>
のような文字列配列に簡単に変換できない型では、作業が煩雑になります。
.NET 4+に対応しています。
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
Detail & Pre .Net 4.0 ソリューション {{5678331}} {{5678331}}
IEnumerable
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
必要であれば、同等のヘルパーメソッドを書くのは簡単です。
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
そしてそれを次のように呼び出します。
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
これでstring.Join
を呼び出すことができます。もちろん、ヘルパーメソッドを使わなければならないわけではありません。
// C# 3 and .NET 3.5 way:
string joined = string.Join(",", strings.ToArray());
// C# 2 and .NET 2.0 way:
string joined = string.Join(",", new List<string>(strings).ToArray());
後者はちょっとした口癖のようなものですが :)
これは最もシンプルな方法であり、パフォーマンスにも優れています。パフォーマンスがどのようなものであるかについては、[this one][1]などの質問があります。
.NET 4.0の時点では、[string.Join`][2]で利用できるオーバーロードが増えているので、実際にはただ書くことができます。
string joined = string.Join(",", strings);
ずっとシンプルですね :)
[1]: https://stackoverflow.com/questions/219519/whats-the-c-method-syntax-for-converting-an-array-to-a-simple-string [2]: http://msdn.microsoft.com/en-us/library/system.string.join
リスト "や "IEnumerables "に.ToArray()
を使用し、その後、必要に応じてString.Join()
を使用することができます。