c# - 无法将 lambda 表达式转换为委托(delegate)类型 'System.Func<char,bool>'

标签 c# linq lambda

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

输入:这是堆栈溢出

输出:这是堆栈流

我试图用下面的代码实现它:

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

但它无法编译。

我在语句 Char.ToUpper(s1) 上有两个错误

错误 1:

Cannot implicitly convert type 'char' to 'bool'

错误 2:

Cannot convert lambda expression to delegate type 'System.Func' because some of the return types in the block are not implicitly convertible to the delegate return type

最佳答案

这个呢?

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

它获取单词的整个子字符串并仅更改最后一个字符。

关于c# - 无法将 lambda 表达式转换为委托(delegate)类型 'System.Func<char,bool>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999156/

相关文章:

javascript - 如何将此 javascript 代码重写为 C++11?

Java:使用lambda参数获取实际类型的泛型方法

c# - 如何隐式转换这个?

c# - 正则表达式和冒号 ( :)

c# - ASP.NET/Linq - 如何在 linq 查询中转义 HTML 字符?

c# - LEM2算法在C#中的实现

java - 使用 lambda 对 List 中的 BigDecimal 值求和

c# - 为什么我不应该在我的字段前加上前缀?

c# - 我可以存储对本地引用的引用吗?

c# - 使用 linq 按字母顺序对 TreeView 进行排序