3

がある場合IEnumerable、これは値をコンマ区切りで吐き出す ToString メソッドを作成する最もクリーンな方法ですか?

   var enumOfObjects = myEnumerable as IList<object> ?? myEnumerable.Cast<object>().ToList();
   var enumOfStrings = enumOfObjects.Select(x => x.ToString());
   var finalString = String.Join(",", enumOfStrings);

または、foreach ループの方がよいでしょうか。または、これを行うためのよりクリーンな方法はありますか?

4

2 に答える 2

2

以下はより短いものです (よりクリーンであると考えられるかもしれません):

enumOfObjects.Aggregate((a,b) => a+","+b))

次のようになります。

IEnumerable<object> enumOfObjects = new List<object> {1, "Cat", 3, 4};
Console.WriteLine(enumOfObjects.Aggregate((a,b) => a+","+b));
//outputs 1,Cat,3,4

実際に文字列として使用したい場合は、それを呼び出すToString()か、文字列にキャストする必要があります。

于 2013-06-21T03:46:38.333 に答える
1

あなたのコードは既に動作しているように見えるので、再利用しやすいようにコードを拡張メソッドにすることができます:

public static class EnumerableExtensions
{
    public static string ToCommaSeparatedList(this IEnumerable enumerable)
    {
        var enumOfObjects = myEnumerable as IList<object> ?? myEnumerable.Cast<object>().ToList();
        var enumOfStrings = enumOfObjects.Select(x => x.ToString());
        return String.Join(",", enumOfStrings);
    }
}

次に、メソッドをもう少し簡単に使用できます。

myEnumerable.ToCommaSeparatedList();
于 2013-06-21T03:45:07.803 に答える