ASP.NET MVC: impossible d'utiliser une expression lambda en tant qu'argument pour une opération distribuée dynamiquement
J'ai un ASP.NET MVC4 Application.
Mon point de vue, d'obtenir une Liste de mon contrôleur.
Je tiens à les sélectionner de la liste avec une expression lambda, mais j'obtiens l'erreur suivante:
Ne peut pas utiliser une lambda expression comme argument d'une manière dynamique distribué opération sans premier casting à un délégué ou de l'expression de l'arbre type de
List<project.Models.LAYER> layers = new List<project.Models.LAYER>();
layers = @Model.layers.Select(x => x.KONT == "EUROPE");
@Modèle.des couches est une Liste
MAINTENANT J'AI ESSAYÉ ÇA: MAIS LE MÊME MESSAGE D'ERREUR:
@{
List<project.Models.LAYER> layers = Model.layers.Where(x => x.KNOT == "EUROPE").ToList();
}
source d'informationauteur alexander-fire
Vous devez vous connecter pour publier un commentaire.
Il semble que vous êtes en train de faire ce à votre avis, qui viole les principes de la séparation des préoccupations. Mais c'est la façon dont vous le feriez.
Une Meilleure Façon
Ce que vous devez faire, cependant, est de créer une méthode sur le Modèle "GetLayersForLocation" Puis votre code devrait ressembler à ceci:
Dans Votre Modèle De Classe
Dans Votre Afficher Le Code
La raison que c'est mieux, c'est que vous pouvez maintenant l'unité de tester votre code, avant que vous n'auriez pas pu le faire parce que c'est juste une partie de votre point de vue, mais maintenant vous pouvez exécuter des tests automatisés pour s'assurer que les couches de travail.
Pour les autres, j'ai remarqué que j'obtiens cette erreur dans les Vues lorsque je n'ont pas fortement typé vuecomme si un seul caractère est accidentellement tapé avant le "@type de modèle" ligne (et donc la déclaration du type de modèle n'est plus désormais réalisés.)
des couches est une Liste, le Modèle.les couches.Sélectionnez sera de retour une
IEnumerable.
Si vous voulez seulement de retour de couche dont la
KONT == ‘EUROPE'
vous devez utiliser comme suit