Lambda表达式错误

时间:2017-08-27 23:44:49

标签: c# winforms lambda

我有一个问题,过去几天我一直在吃头脑。我无法找到解决方案。

我试图找到' \'在使用lambda表达式的字符串中。这是代码:

Microsoft.Office.Interop.Excel.Range labelSupportTopic = (Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[resultRange.Row, 29];
int count = labelSupportTopic.Text.ToString().Count(c => c == '\\'); 

我从Excel工作表中获取日期,因此是Interop参考。

让我感到困扰的是,这段代码是从一个完全相同的VS项目中复制并粘贴的,该项目的大部分代码都以某种方式丢失了。我很幸运能有一部分,这就是其中之一。无论如何,在我的另一个VS项目(我失去了代码的那个)上,我能够构建它看起来很好。但是我现在的项目,我从头开始构建的项目,它会在Build上抛出一个错误。整个部分,包含这个逻辑的部分从我的旧项目(Builds fine)中解脱出来。错误读取" 不能将lambda表达式用作动态调度操作的参数,而无需先将其转换为委托或表达式树类型"我搜索了互联网但我无法找到解决方案。

请帮忙吗?!

1 个答案:

答案 0 :(得分:1)

int count = (labelSupportTopic.Text as string).Count('\\'.Equals);

由于.Text的类型为dynamic.ToString()的类型也为dynamic,而lambda表达式中c的类型可以'推断。

在早期版本的C#中没有dynamic关键字(在VS 2010之前),.Text的类型为object,您的原始版本应该编译而没有问题。< / p>