嵌入式声明不能是声明或带标签的声明

时间:2013-11-09 04:25:10

标签: c# linq linq-expressions

我试图在变量中存储一个linq express,但它给了我这个编译时错误

  

Emebeded Statement不能是声明或lable状态

我找到了如何从这个stackoverflow问题中为一个变量赋一个linq表达式 Lambdaexpression of Linq-query in a variable

但是当我尝试实现它时,我得到以下错误, 有人能帮我吗 ?

我试过的代码

 if (dtpFrom.DateTime != null) 
           Func<BAL.Receipt , DateTime? > expr = receipt => receipt.Date ;

1 个答案:

答案 0 :(得分:2)

这是因为该代码片段无效C#。 this其他StackOverflow答案解释了原因。总结一下这个答案,C#规范声明if语句的主体必须是 embedded-statement ,它不包含作为变量声明的语句。

要让代码停止导致该错误,您可以尝试在if语句主体周围抛出括号:

if (dtpFrom.DateTime != null) 
{
    Func<BAL.Receipt , DateTime? > expr = receipt => receipt.Date ;
}

虽然这不会做太多任何事情,因为你只是将lambda存储在Func&lt;,&gt;类型的临时变量中。只有if语句中的范围。你要么必须在if状态体内使用它,要么将它存储在其他地方。