J'utilise une expression LINQ lambda comme ceci:
int Value = 1;
qryContent objContentLine;
using (Entities db = new Entities())
{
objContentLine = (from q in db.qryContents
where q.LineID == Value
orderby q.RowID descending
select q).FirstOrDefault();
}
Cependant, j'obtiens l'erreur suivante:
Impossible de convertir l'expression lambda en type 'chaîne' car ce n'est pas un type délégué
Je pense qu'il vous manque using System.Linq;
de cette classe système.
et ajoutez également using System.Data.Entity;
au code
Dans mon cas, j'ai dû ajouter using System.Data.Entity;
Mon cas a résolu que j'utilisais
@Html.DropDownList(model => model.TypeId ...)
en utilisant
@Html.DropDownListFor(model => model.TypeId ...)
va le résoudre
S'il n'est pas lié à l'absence de directives d'utilisation déclarées par d'autres utilisateurs, cela se produira également s'il y a un autre problème avec votre requête.
Jetez un coup d’œil à la liste d’erreurs du compilateur VS: Par exemple, si la variable "Valeur" de votre requête n’existe pas, vous obtiendrez l’erreur "lambda à chaîne", ainsi que quelques erreurs reliées à l'inconnu/champ erroné.
Dans votre cas, cela pourrait être:
objContentLine = (from q in db.qryContents
where q.LineID == Value
orderby q.RowID descending
select q).FirstOrDefault();
Les erreurs:
Erreur 241 Impossible de convertir l'expression lambda en type 'chaîne' car ce n'est pas un type délégué
Erreur 242 délégué 'System.Func <..>' ne prend pas 1 argument
Erreur 243 Le nom 'Valeur' n'existe pas dans le contexte actuel
Corrigez l'erreur de variable "Valeur" et les autres erreurs disparaîtront également.
Pour les personnes qui tombent juste dessus par hasard maintenant, j’ai résolu une erreur de ce type, générée avec toutes les références et utilisant des instructions placées correctement. Il existe évidemment une certaine confusion avec la substitution dans une fonction qui renvoie DataTable au lieu de l’appeler sur un DataTable déclaré. Par exemple:
Cela a fonctionné pour moi:
DataTable dt = SomeObject.ReturnsDataTable();
List<string> ls = dt.AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();
Mais cela n'a pas:
List<string> ls = SomeObject.ReturnsDataTable().AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();
Je ne suis toujours pas sûr à 100% pourquoi, mais si quelqu'un est frustré par une erreur de ce type, essayez-le.