无法将lambda表达式分配给匿名类型属性

时间:2017-08-09 16:30:27

标签: c# asp.net-mvc linq lambda

为什么我无法将Func<MyModel,bool>Html.Action类型的参数传递给Controller?当我尝试以下代码时,它给出了我这样的错误:

public PartialViewResult MyMethod(Func<MyModel,bool> lambda)
{
}

在剃刀中:

@{var result = Html.Action("MyMethod", "MyController" , new { lambda = c => !c.Checked});}

错误:

  

无法将lambda表达式分配给匿名类型属性

这不是一个重复的问题,因为这个问题正在寻找为什么会发生这种情况,但我正在寻找解决方案。

1 个答案:

答案 0 :(得分:0)

@{ var result = Html.Action("MyMethod", "MyController", new { lambda = new Func<Model,bool>( c => !c.Checked) }); }

您可以通过在其构造函数中传递 lambda 来分配新的 Func 类型对象。不允许将 lambda 或匿名方法分配给匿名属性,因为我们无法从 lambda 或匿名方法中明确推断委托类型。