我有一个问题,过去几天我一直在吃头脑。我无法找到解决方案。
我试图找到' \'在使用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表达式用作动态调度操作的参数,而无需先将其转换为委托或表达式树类型"我搜索了互联网但我无法找到解决方案。
请帮忙吗?!
答案 0 :(得分:1)
int count = (labelSupportTopic.Text as string).Count('\\'.Equals);
由于.Text
的类型为dynamic
,.ToString()
的类型也为dynamic
,而lambda表达式中c
的类型可以'推断。
在早期版本的C#中没有dynamic
关键字(在VS 2010之前),.Text
的类型为object
,您的原始版本应该编译而没有问题。< / p>