2

リストがあります:

List<int> list = new List<int> {1, 2, 3, 4, 5};

リストの文字列表示を取得したい場合。しかし、コードlist.ToString()リターン"System.Collections.Generic.List'1[System.Int32]"

私はこのような標準的な方法を探しています:

    string str = list.Aggregate("[",
                               (aggregate, value) =>
                               aggregate.Length == 1 ? 
                               aggregate + value : aggregate + ", " + value,
                               aggregate => aggregate + "]");

そして得る"[1, 2, 3, 4, 5]"

ICollection を適切な文字列形式で表示するための標準的な .NET メソッドはありますか?

4

3 に答える 3

9

私が知っていることではありませんが、次のような拡張メソッドを実行できます。

    public static string ToString<T>(this IEnumerable<T> l, string separator)
    {
        return "[" + String.Join(separator, l.Select(i => i.ToString()).ToArray()) + "]";
    }

次の用途で:

List<int> list = new List<int> { 1, 2, 3, 4, 5 };
Console.WriteLine(list.ToString(", "));
于 2009-10-14T16:39:42.670 に答える
7

あなたは文字列を使うことができます。

"[" + string.Join(", ", list.ConvertAll(i => i.ToString()).ToArray()) +"]";
于 2009-10-14T16:36:29.353 に答える
1

C# 3.0 と LINQ を使用している場合は、これを行うことができます

var mystring = "[" + string.Join(", ", new List<int> {1, 2, 3, 4, 5}
                     .Select(i=>i.ToString()).ToArray()) + "]";

... これは拡張メソッドの例です ...

public static string ToStrings<T>(this IEnumerable<T> input)
{
    var sb = new StringBuilder();

    sb.Append("[");
    if (input.Count() > 0)
    {
        sb.Append(input.First());
        foreach (var item in input.Skip(1))
        {
            sb.Append(", ");
            sb.Append(item);
        }
    }
    sb.Append("]");

    return sb.ToString();
}
于 2009-10-14T16:35:29.440 に答える