【问题标题】:Convert a list of strings to a single string将字符串列表转换为单个字符串
【发布时间】:2013-10-21 04:15:47
【问题描述】:
List<string> MyList = (List<string>)Session["MyList"];

MyList 包含以下值:12345523

我尝试使用下面的代码,但是值消失了。

string Something = Convert.ToString(MyList);

我还需要用逗号分隔每个值(“,”)。

如何将List&lt;string&gt; Mylist 转换为string

【问题讨论】:

标签: c# string list


【解决方案1】:
string Something = string.Join(",", MyList);

【讨论】:

    【解决方案2】:

    试试这个代码:

    var list = new List<string> {"12", "13", "14"};
    var result = string.Join(",", list);
    Console.WriteLine(result);
    

    结果是:"12,13,14"

    【讨论】:

      【解决方案3】:

      您也可以使用 LINQ,并执行以下操作:

      string finalString = collection.Aggregate("", (current, s) => current + (s + ","));
      

      但是,为了纯粹的可读性,我建议使用循环版本或 string.Join 机制。

      【讨论】:

      • 您能详细说明一下语法吗?我是否正确假设第一个参数是返回字符串,它将与第二个参数连接? current s到底是什么变量,当前字符串和当前值?
      【解决方案4】:

      或者,如果您担心性能,可以使用循环,

      var myList = new List<string> { "11", "22", "33" };
      var myString = "";
      var sb = new System.Text.StringBuilder();
      
      foreach (string s in myList)
      {
          sb.Append(s).Append(",");
      }
      
      myString = sb.Remove(sb.Length - 1, 1).ToString(); // Removes last ","
      

      This Benchmark 表明使用上述循环比 String.Join() 快约 16%(平均超过 3 次运行)。

      【讨论】:

        【解决方案5】:

        你可以为此做一个扩展方法,这样它也将更具可读性:

        public static class GenericListExtensions
        {
            public static string ToString<T>(this IList<T> list)
            {
                return string.Join(",", list);
            }
        }
        

        然后你可以:

        string Something = MyList.ToString<string>();
        

        【讨论】:

          【解决方案6】:

          我不得不在已接受的答案上多加一点。没有它,Unity 会抛出这个错误:

          cannot convert `System.Collections.Generic.List<string>' expression to type `string[]'
          

          解决方案是使用.ToArray()

          List<int> stringNums = new List<string>();
          String.Join(",", stringNums.ToArray())
          

          【讨论】:

          • 这不应该发生,因为 string.JoinIEnumerables 上工作,ListArray 都是。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-14
          • 2016-07-05
          • 1970-01-01
          • 1970-01-01
          • 2011-09-05
          相关资源
          最近更新 更多