【问题标题】: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 状态主体中使用它,要么将其存储在其他地方。