then multiple framework c# .net entity-framework lambda

c# - multiple - Entity Framework-No se puede convertir la expresión lambda para escribir ''string'' porque no es un tipo de delegado



iqueryable include (14)

Estoy usando Entity Framework en mi código basado en C #. Me encuentro con una rareza inesperada y estoy buscando sugerencias.

Caso 1, 2, 3, 4 ... Proyectos:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll

Muestras (todos estos trabajos):
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<RivWorks.Model.NegotiationAutos.AutoWithImage> GetProductByCompany(Guid companyId) { var myProduct = from a in _dbFeed.AutoWithImage where a.CompanyID == companyId select a; return myProduct.ToList(); }

etc

Caso "rareza":
RivWorks.Web.Service.dll (proyecto WCF)
Contiene las mismas referencias que los otros proyectos.

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

Estoy obteniendo este error de tiempo de compilación (la palabra "where" está resaltada en mi editor):
No se puede convertir la expresión lambda para escribir ''cadena'' porque no es un tipo de delegado

tienes una idea de que podría causar esto?


El hilo es un poco viejo, pero acabo de encontrarlo, y nada en la red fue la respuesta. Un sitio mencionó qué condujo a la respuesta, que era un problema de tipo de datos, pero lamentablemente no puedo encontrarlo nuevamente, así que estoy publicando mi solución aquí. Tal vez algún investigador futuro se beneficie de ello.

Original: prueba de IQueryable = de r en Registros donde r.Record_ID == 100 select r;

donde Records es un IQueryable resultante de un expresson LINQ anterior.

La solución es emitir Registros: (IQueryable <record>) Registros en la expresión. Habiéndolo encontrado, tiene perfecto sentido. Los registros no se escriben, por lo que el LINQ no tiene ninguna pista si r.Record_ID es válido. La confusión es el mensaje de error, que aparece en toda la red en docenas de lugares, en casi todos los casos, la solución es una de las dos cláusulas de uso que faltan. El uno o dos que encontré que no eran un problema de uso, no se molestaron en publicar lo que lo solucionó.

Espero que esto ayude...


En mi caso faltaba

using System.Data.Entity;


En mi caso, tuve el

Using System.Linq;

pero me faltaba el && después de un elemento cláusula where.

Código incorrecto:

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

Código correcto (sin error):

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

Espero que esto le ahorre a alguien algo de tiempo.


En mi caso, tuve este error al intentar usar Incluir en clientContext.Load en una aplicación Sharepoint 2013.

Había incluido la biblioteca cliente de Sharepoint así:

using SP = Microsoft.SharePoint.Client;

Para solucionarlo, además, también lo agregué sin el espacio de nombres:

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


Estaba teniendo un problema similar vinculando columnas a una Telerik MVC Grid. Tenía una propiedad Id en mi clase ViewModel. (Inspirado por la respuesta de Chris anterior) Lo renombré a XxxId y el problema desapareció. Me parece recordar algo sobre MVC haciendo algo especial para las propiedades de Id.


Estuve luchando con esto en una plantilla de Telerik Grid dentro de una vista Razor durante aproximadamente una hora. En mi caso, esto:

columns.Bound(x => x.ID).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.ID)">@item.ID</a></text>);

se suponía que era esto:

columns.Bound(x => x.Id).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.Id)">@item.Id</a></text>);

¡El caso en "Id" estaba mal! Espero que esto ayude a alguien. ¡Puede estar recibiendo este error solo porque pone una propiedad inexistente!


Me encontré con esto y encontré una solución diferente. Estaba usando var query = context.Contacts.Where(c => c.FullNameReverse == "TingTong"); y obteniendo el error mencionado. El error fue que estaba usando el método FullNameReverse() como propiedad FullNameReverse . Perdido el ()!!!


Mi problema involucraba el formato:

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

Cada p.Whatever tenía este error en él.

Este era un proyecto que usa MVC, y encontré que mi problema era tener "public static int" o "public static string" en estas variables (Id, Name, etc.) en mi modelo. Cuando eliminé "static" en todas las variables de mi modelo, ya no recibí el error. Me estaba volviendo loco durante aproximadamente un día ...


Para aquellos interesados ​​en el resultado:
Me faltaba una simple declaración de uso al principio de mi código.

using System.Linq;

Esto lo solucionó.


Solo prueba usar System.Linq; Creo que te ayudará a resolver estos problemas.


Tuve este problema en una versión ligeramente diferente.
Si llama a un método (estático) desde el interior de su lambda, verifique su tipo de devolución. Si el tipo de devolución debe ser un IEnumerable (que a menudo es cierto al usar lambdas) pero devuelve un objeto, obviamente tiene un problema.


Tuve un problema similar, pero con Rx y en mi caso agregué

using System;

ayudado. FWIW

Meterse con los métodos de extensión que faltan es a veces demasiado molesto.


tuve el mismo problema con la navaja mvc 3 tal vez alguien tiene lo mismo, así que quiero mostrar cómo solucionarlo en mi postura

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

Traté de usar contiene, pero por lo tanto, OgrenciId es int Obtendré el error mencionado aquí, así que mediante el uso de iguales se resuelve el problema


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