【发布时间】:2015-01-29 12:07:42
【问题描述】:
在 C# 中,是否可以在 lambda 表达式中调用函数?
比如下面是lambda表达式的一些内容:
(a => a.testBool && a.testBool2)
是否可以将以上内容写成一个函数,在lambda表达式内部调用该函数,得到同样的结果?
提前致谢。
编辑
在我原来的帖子中,我没有说明这是针对 dbSet。
我在测试对象(a)中创建了如下函数,如下:
public bool testBool()
{
return true;
}
调用以下代码时:
(a => a.testBool()).ToList()
我收到此错误:
LINQ to Entities 无法识别方法“Boolean testBool()” 方法,并且该方法不能翻译成商店表达式。
【问题讨论】:
-
当然你可以从 lamda 调用方法,lambdas 也是方法。它们没有什么特别之处。所以你可以用正常的方法做任何事情。
-
你有没有试过把上面的内容写成一个函数,并在lambda里面调用这个函数?
-
您是在使用 lambda 来创建委托,还是创建表达式树?如果您尝试创建委托,这很容易。如果您正在尝试创建表达式树,它仍然是可能的,但要复杂得多。