【问题标题】:Emebeded Statement can not be a declaration or labled stateme嵌入式声明不能是声明或标签声明
【发布时间】:2013-11-09 19:22:56
【问题描述】:

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

嵌入的声明不能是声明或标签状态

我从这个 stackoverflow 问题中找到了如何将 linq 表达式分配给变量 Lambdaexpression of Linq-query in a variable

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

我试过的代码

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

【问题讨论】:

    标签: c# linq linq-expressions


    【解决方案1】:

    这是因为代码的 sn-p 不是有效的 C#。 this 其他 StackOverflow 答案解释了原因。为了总结这个答案,C# 规范规定 if 语句的主体必须是 嵌入式语句,它不包括作为变量声明的语句。

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

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

    虽然这不会做任何事情,因为您只是将该 lambda 存储在一个 Func 类型的临时变量中,该变量仅在 if 语句中具有范围。您要么必须在 if 状态主体中使用它,要么将其存储在其他地方。

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多