以下是代码:
List<string> SecurityCodePreSend = new List<string> { "1", "2", "3", "4" };
List<string> SecurityCodeSended = new List<string>();
我想将SecurityCodePreSend的前15个添加到SecurityCodeSended,所以我使用Lambda的Take
来完成它。
SecurityCodeSended.AddRange(SecurityCodePreSend.Select(n => n.Take(15)));
但是,Visual Studio报告的错误无法将IEnumerable<char>
转换为IEnumerable<string>
。
我用谷歌搜索,发现有人说string.Concat
可以解决它。我试过并失败了。
如何将IEnumerable<char>
转换为IEnumerable<string>
?谢谢。
答案 0 :(得分:3)
IEnumerable<String>.Select( n => n.Take(15) )
不符合您的想法:n
中的.Select( n => )
代表父String
中的每个IEnumerable<String>
值,因此{{1获取每个字符串值的前15个字符,而不是前15个字符串值。
(这是因为Linq扩展方法适用于任何 Select( n => n.Take(15) )
而IEnumerable<T>
是String
(用于公开字符串中的每个字符)。) / p>
你只需要这样:
IEnumerable<Char>
我注意到您的代码应符合C#/ .NET命名约定:
SecurityCodeSended.AddRange( SecurityCodePreSend.Take(15) )
camelCase
PascalCase
_
如果应该使用C#关键字this.
而不是正确的类型名称string
,最后String
无效英语(Sended
)语法,正确的形式是en-US
。如果我们将这些组合在一起,您的代码应该是:
Sent