0

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

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

我发现了如何将 linq 表达式分配给这个变量 中的变量中 Linq-query 的 stackoverflow Lambda表达式的问题

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

我试过的代码

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

1 回答 1

2

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

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

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

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

于 2013-11-09T04:59:37.530 回答