gpt4 book ai didi

c# - ASP.NET MVC : Cannot use a lambda expression as an argument to a dynamically dispatched operation

转载 作者:太空狗 更新时间:2023-10-29 17:34:13 24 4
gpt4 key购买 nike

我有一个 ASP.NET MVC4 应用程序。我的 View 从我的 Controller 获取一个列表。我想用 lambda 表达式选择这些列表,但出现以下错误:

如果不首先将 lambda 表达式转换为委托(delegate)或表达式树类型,则不能将其用作动态分派(dispatch)操作的参数

List<project.Models.LAYER> layers = new List<project.Models.LAYER>();
layers = @Model.layers.Select(x => x.KONT == "EUROPE");

@Model.layers 是一个列表

现在我试过了:但同样的错误:

@{
List<project.Models.LAYER> layers = Model.layers.Where(x => x.KNOT == "EUROPE").ToList();
}

最佳答案

在你看来你是这样做的,这违反了关注点分离的原则。但这就是您要做的。

@
{
var layers = Model.layers.Where(x => x.KONT == "EUROPE").ToList();
}

@foreach(var layer in layers)
{
.....
}

更好的方法

然而,您应该做的是在您的模型“GetLayersForLocation”上创建一个方法,然后您的代码将如下所示:

在你的模型类中

public IEnumerable<Layer> GetLayersForLocation(string location)
{
return this.layers.Where(x => x.Knot == location);
}

在您的 View 代码中

@foreach(var layer in Model.GetLayersForLocation("EUROPE"))
{
.....
}

之所以更好,是因为您现在可以对您的代码进行单元测试,之前您不能这样做,因为它只是您 View 的一部分,但现在您可以运行自动化测试以确保获得正确的层。

关于c# - ASP.NET MVC : Cannot use a lambda expression as an argument to a dynamically dispatched operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com