无法将lambda表达式转换为委托类型'System.Func <char,bool>'

Sha*_*yar 1 c# linq lambda

我必须把每个单词的最后一个字母大写.

输入:这是堆栈溢出

输出: thiS iS stacK oveR floW

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

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

但它没有编译.

我在声明中有两个错误 Char.ToUpper(s1)

错误1:

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

错误2:

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

Pat*_*man 5

那这个呢?

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

它接受单词的整个子字符串并仅更改最后一个字符.