无法将lambda表达式转换为委托类型&#39; System.Func <char,bool>&#39; </char,bool>

时间:2014-09-23 15:35:29

标签: c# linq lambda

我必须将每个单词的最后一个字母大写。

输入:这是堆叠流量

输出:这是一个很好的例子

我试图用以下代码实现它:

return String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(c => c.Last((s1 => Char.ToUpper(s1)))));

但它没有编译。

我在声明Char.ToUpper(s1)

上有两个错误

错误1:

  

无法将类型'char'隐式转换为'bool'

错误2:

  

无法将lambda表达式转换为委托类型   'System.Func'因为块中的一些返回类型   不能隐式转换为委托返回类型

1 个答案:

答案 0 :(得分:5)

这个怎么样?

var result = String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
             .Select(c => c.Substring(0, c.Length - 1) + char.ToUpper(c.Last())));

它占用了单词的整个子字符串,仅更改了最后一个字符。