【问题标题】:converting string to List<string>将字符串转换为 List<string>
【发布时间】:2012-07-31 13:35:30
【问题描述】:

我想要做的是使用 linq 将字符串转换为字符串列表。我尝试以下代码行:

value = "one,two,three,four";

List<string> arr = value.Split(',').Select(s => s.ToList());

但我得到了错误:

错误 1 ​​无法将类型“System.Collections.Generic.IEnumerable>”隐式转换为“System.Collections.Generic.List”。存在显式转换(您是否缺少演员表?)

如果有人能提供一些帮助,那就太棒了。

【问题讨论】:

标签: c# linq


【解决方案1】:

你好,你可以试试

 value.Split(',').ToList();

【讨论】:

    【解决方案2】:

    您在每个单独的数组元素上都有ToList - 即在每个字符串上。该调用本身是有效的,因为string 实现了IEnumerable&lt;char&gt;,但这意味着您正在创建一个不是您想要的IEnumerable&lt;List&lt;char&gt;&gt;

    我认为您根本不需要 Select - 只需使用:

    List<string> arr = value.Split(',').ToList();
    

    【讨论】:

      【解决方案3】:

      列表构造函数之一takes an enumerable

      var arr = new List<string>(value.Split(','));
      

      不知道为什么人们坚持对所有东西进行 linq 扩展...

      【讨论】:

      • 我想这是一个品味问题,但我发现 LINQ 版本更具可读性(没有尖括号,没有嵌套的常规括号)。
      • @jeroenh 毫无疑问,扩展方法实现很可能仍然使用此构造函数。我只是觉得有趣的是,这些天有多少东西的样式像 linq 扩展 :-) 我会不假思索地使用其中任何一个,这对我来说是最重要的,因为花再三思考它有点浪费。
      【解决方案4】:
      value = "one,two,three,four";
      
      List<string> arr = value.Split(',').Select(s => s).ToList();
      

      或更简单:

      List<string> arr = value.Split(',').ToList();
      

      【讨论】:

        【解决方案5】:

        即使你不需要select,但如果你想使用它,那么它应该是:

          List<string> arr = value.Split(',').Select(s => s).ToList();
        

        或者你可以简单地做:

          List<string> arr = value.Split(',').ToList();
        

        【讨论】:

        • +1 显示带有 Select 的版本,即使它不是必需的。它可以让 OP 进行比较,看看他们做错了什么。
        【解决方案6】:

        您不需要选择:

        value = "one,two,three,four";
        
        List<string> arr = value.Split(',').ToList();
        

        【讨论】:

          【解决方案7】:
          string value = "one,two,three,four";
          List<string> arr = value.Split(',').ToList();
          

          【讨论】:

            【解决方案8】:

            您不需要在这里使用 LINQ,而是可以简单地这样做:

            string value = "one,two,three,four";
            List<string> arr = value.Split(',').ToList();
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-09-08
              • 2019-11-30
              • 2019-10-21
              相关资源
              最近更新 更多