ASP.NET MVC: Cannot use a lambda expression as an argument to a dynamically dispatched operation
It looks like you're doing this in your view, which violates the principles of separation of concerns. But this is how you would do it.
@{ var layers = Model.layers.Where(x => x.KONT == "EUROPE").ToList();}@foreach(var layer in layers){ .....}
A Better Way
What you should do however is create a method on your Model "GetLayersForLocation" Then your code would look like this:
In Your Model Class
public IEnumerable<Layer> GetLayersForLocation(string location){ return this.layers.Where(x => x.Knot == location);}
In Your View Code
@foreach(var layer in Model.GetLayersForLocation("EUROPE")){ .....}
The reason this is better is you can now unit test your code, before you wouldn't be able to because it's just part of your view, but now you can run automated tests to ensure that getting the proper layers is working.
For others, I've notice I get this error in Views when I do not have a strongly typed view, such as if a single character accidentally gets typed before the "@model type" line (and thus the model type declaration is now no longer being made.)
@model SomeModel
layers is a List, Model.layers.Select will return an
IEnumerable.
If you only want to return layer whose
KONT == ‘EUROPE'
, you should use like followinglayers = @Model.layers.Where(x => x.KNOT == "EUROPE").ToList();