【问题标题】:Error message: cannot convert from 'System.Collections.Generic.IEnumerable' to 'string[]'错误消息:无法从 'System.Collections.Generic.IEnumerable' 转换为 'string[]'
【发布时间】:2013-04-11 19:27:50
【问题描述】:

我有以下C#源码:(asp.net version:3.5)

 //map is from 'string' type
 map = string.Join("", TrackMap.Split('|').Select(x => string.Format("<a href=\"{0}\" class=\"lightview\"><img src=\"{0}\" style=\"margin-right:30px;\" width=\"120\" height=\"80\"/>gh</a>", x)));

问题是我收到以下错误消息:

参数“2”:不能从 'System.Collections.Generic.IEnumerable' 到 'string[]'

还有错误信息:

'string.Join(string, string[])' 的最佳重载方法匹配 有一些无效的参数

我的问题是如何解决它? (也许在 web.config 文件中添加一些代码?添加 'using'-someting?)

【问题讨论】:

  • 从 .NET 4.0 开始 String.Join() 接受 IEnumerable&lt;string&gt; 作为第二个参数。

标签: c# linq generics type-conversion


【解决方案1】:

由于您在.NET 3.5 中尚不支持Join&lt;T&gt;(String, IEnumerable&lt;T&gt;),但支持Join(String, Object[]),因此,您只需调用ToArray 方法即可将IEnumerable 转换为Array

map = string.Join("", TrackMap.Split('|').Select(x => string.Format("...", x))
                                         .ToArray());

【讨论】:

    【解决方案2】:

    string.Join 具有采用 IEnumerable&lt;String&gt; 的重载是 .NET 4 中的新功能,因此您不能在 3.5 中使用它。

    所以这应该有效:

    map = string.Join("", TrackMap.Split('|')
                .Select(x => string.Format("<a href=\"{0}\" class=\"lightview\"><img src=\"{0}\" style=\"margin-right:30px;\" width=\"120\" height=\"80\"/>gh</a>", x)
                .ToArray()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多