5

我有这个 LINQ 表达式:

string[] x = originalString.Split(',').ToList().ForEach(y => y.Substring(0,1).ToUpper());

我收到此错误消息:

Cannot convert source type 'void' to target type 'string[]'

我想我得到了错误;ForEach 返回无效。我不知道如何修复它并仍然保持这个 LINQ 表达式。

如何拆分originalString然后循环遍历数组中的元素,应用于.ToUpper()每个元素并在 LINQ 表达式中完成所有操作?

4

2 回答 2

14
string[] x = originalString.Split(',')
                           .Select(y => y.Substring(0,1).ToUpper())
                           .ToArray();

应该做的事情 - 获取每个单词的第一个字母,大写。

但我认为你真正想要的是:

string[] x = originalString.Split(',')
                           .Select(y => y.Substring(0, 1).ToUpper() + y.Substring(1))
                           .ToArray();

这应该利用从输入中分离出来的元素(听起来更有用)。

第二个查询的用法示例:

 string originalString = "TestWord,another,Test,word,World,Any";

输出:

TestWord
Another
Test
Word
World
Any
于 2013-03-11T17:28:52.270 回答
1

使用投影:

string[] x = originalString.Split(',')
    .Select(y => y.Substring(0,1).ToUpper()).ToArray();
于 2013-03-11T17:29:33.487 回答