1. ホーム
  2. c#

[解決済み] IList<string> または IEnumerable<string> からカンマ区切りリストを作成する。

2022-03-20 04:45:18

質問

の文字列のカンマ区切りリストを作成する最も簡単な方法は何ですか? IList<string> または IEnumerable<string> ?

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 ソリューション

IEnumerable<string> は、文字列配列に変換することができます 非常に LINQ (.NET 3.5)を使えば簡単にできます。

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());

後者はちょっと口惜しいですが :)

これは最もシンプルな方法であり、かなりパフォーマンスも高いと思われます。パフォーマンスが正確にどのようなものかについては、他にも以下のような質問があります(ただし、これらに限りません)。 これ .

.NET 4.0では、より多くのオーバーロードが string.Join と書くだけで、実際に使えるようになります。

string joined = string.Join(",", strings);

もっとシンプルに :)