Entity Framework – Impossible de convertir une expression lambda pour taper ‘ssortingng’ car ce n’est pas un type délégué

J’utilise Entity Framework dans mon code basé sur C #. Je me heurte à une bizarrerie inattendue et je cherche des suggestions.

Cas 1, 2, 3, 4 … Projets:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll

Échantillons (tous ces travaux):
RivWorks.Alpha.dll:

public static bool EndNegotitation(long ProductID) { var product = (from a in _dbFeed.AutoWithImage where a.AutoID == ProductID select a).FirstOrDefault(); ... } 

RivWorks.Service.dll

 public static RivWorks.Model.NegotiationAutos.AutoWithImage GetProductById(long productId) { var myProduct = from a in _dbFeed.AutoWithImage where a.AutoID == productId select a; return myProduct.FirstOrDefault(); } public static List GetProductByCompany(Guid companyId) { var myProduct = from a in _dbFeed.AutoWithImage where a.CompanyID == companyId select a; return myProduct.ToList(); } 

etc

Case “bizarre”:
RivWorks.Web.Service.dll (projet WCF)
Contient les mêmes références que les autres projets.

 public NegotiateSetup GetSetup(ssortingng method, ssortingng jsonInput) { ... long.TryParse(ProductID, out result); var product = (from a in _dbFeed.AutoWithImage where a.AutoID == result select a).FirstOrDefault(); ... } 

Je reçois cette erreur de compilation (le mot “où” est mis en évidence dans mon éditeur):
Impossible de convertir une expression lambda pour taper ‘ssortingng’ car il ne s’agit pas d’un type délégué

Des idées ce qui causerait ceci?

Pour ceux intéressés par le résultat:
Il me manquait une simple déclaration d’utilisation en tête de mon code.

 using System.Linq; 

Cela corrige le problème.

Dans mon cas il manquait

using System.Data.Entity;

Dans mon cas, j’avais le

 Using System.Linq; 

mais il me manquait le && après un article de clause where.

Mauvais code:

 item.Group.ID == grp.ID p.Product_Status_Flag == 1 && item.Valid 

Code correct (sans erreur):

 item.Group.ID == grp.ID && // <- This was missing and I didn't see it right away. p.Product_Status_Flag == 1 && item.Valid 

J'espère que cela fera gagner du temps à quelqu'un.

Je me suis débattu avec ceci dans un modèle de Telerik Grid dans une vue de razor pendant environ une heure. Dans mon cas, ceci:

 columns.Bound(x => x.ID).Template(@@item.ID); 

était censé être ceci:

 columns.Bound(x => x.Id).Template(@@item.Id); 

Le cas sur “Id” était faux! J’espère que ça aidera quelqu’un. Vous pourriez avoir cette erreur simplement parce que vous avez mis une propriété inexistante!

 using System.Linq; using System.Data.Entity; 

Je suis tombé sur cela et j’ai trouvé une solution différente. J’utilisais var query = context.Contacts.Where(c => c.FullNameReverse == "TingTong"); et obtenir l’erreur mentionnée. L’erreur était que j’utilisais la méthode FullNameReverse() tant que propriété FullNameReverse . Manqué le ()!!!

J’ai eu le même problème avec mvc 3 razor peut-être que quelqu’un a la même chose, donc je veux montrer comment résoudre ce problème dans mon statut

 List lst = db.Taksit.Where(y => y.OgrenciId.Equals(Convert.ToInt32( list[0].Id))).ToList(); 

j’ai essayé d’utiliser contient mais par conséquent OgrenciId est int je reçois l’erreur mentionnée ici, donc en utilisant égale le problème est résolu

Thread est un peu vieux, mais je viens juste de rencontrer ceci, et rien sur le net n’était la réponse. Un site a mentionné ce qui a conduit à la réponse, qui était un problème de type de données, mais malheureusement, je ne le retrouve pas, alors je poste ma solution ici. Peut-être qu’un futur chercheur en tirera profit.

Original: IQueryable test = from r dans Records où r.Record_ID == 100 select r;

où Records est un IQueryable résultant d’une expression LINQ antérieure.

Le correctif consiste à convertir les enregistrements: (IQueryable ) Enregistrements dans l’expression. Après l’avoir trouvé, c’est parfaitement logique. Records n’est pas tapé, donc le LINQ n’a aucune idée si r.Record_ID est valide. La confusion est le message d’erreur, qui apparaît partout dans le Web dans des dizaines d’endroits, dans presque tous les cas, la solution étant l’une des deux clauses manquantes. Le ou les deux que j’ai trouvé qui n’étaient pas un problème d’utilisation, ils n’ont pas pris la peine de poster ce qui a été corrigé.

J’espère que cela t’aides…

J’avais un problème similaire à la liaison de colonnes à une grid Telerik MVC. J’avais une propriété Id sur ma classe ViewModel. (Inspiré par la réponse de Chris ci-dessus) je l’ai renommé en XxxId et le problème a disparu. Je semble rappeler quelque chose à propos de MVC faire quelque chose de spécial pour les propriétés Id.

J’ai eu un problème similaire mais avec Rx et dans mon cas, l’ajout

 using System; 

aidé. FWIW

Mess avec ces méthodes d’extension manquantes est parfois trop ennuyeux.

Dans mon cas, j’ai eu cette erreur en essayant d’utiliser Include dans clientContext.Load dans une application Sharepoint 2013.

J’avais inclus la bibliothèque client Sharepoint comme suit:

 using SP = Microsoft.SharePoint.Client; 

Pour corriger, je l’ai également ajouté sans l’espace de noms:

 using Microsoft.SharePoint.Client; using SP = Microsoft.SharePoint.Client; 

Mon problème concernait le format:

 .Columns(columns => { columns.Bound(p => p.Id).Filterable(false); columns.Bound(p => p.Name).Width(250); ... 

Chaque p.Wthing avait cette erreur sur elle.

C’était un projet utilisant MVC, et j’ai trouvé que mon problème était d’avoir “public static int” ou “chaîne statique publique” sur ces variables (Id, Name, etc.) dans mon modèle. Lorsque j’ai supprimé “static” sur toutes les variables de mon modèle, je n’ai plus eu l’erreur. Me rendait fou pendant environ une journée …

J’ai eu ce problème dans une version légèrement différente.
Si vous appelez une méthode (statique) depuis votre lambda, vérifiez son type de retour. Si le type de retour doit être un IEnumerable (ce qui est souvent le cas lorsque vous utilisez lambdas) mais que vous retournez un object, vous avez évidemment un problème.

Essayez simplement d’utiliser System.Linq; Je pense que cela vous aidera à régler ces problèmes.