xdocument recorrer nodo leer example especifico elementos ejemplos crear c# linq entity-framework expression predicate

c# - recorrer - El tipo de nodo de expresión LINQ ''Invocar'' no es compatible con LINQ para Entidades en el marco de la entidad



xdocument c# (3)

Este problema se puede resolver utilizando el método AsExpandable () presente en LINQKIT por Joe Albahari. Es el mismo creador de PredicateBuilder que veo que estás usando.

Si consulta con Entity Framework, cambie la última línea a esto:

return objectContext.Products.AsExpandable().Where(predicate);

Puede capturar LINQKIT DLL here o instalarlo a través de un paquete de NuGet here .

Ciertamente resolverá tu problema porque ha resuelto el mío.

¿Alguien puede ayudarme a resolver mi problema? Estoy usando el código que figura a continuación:

public IEnumerable<InvoiceHeader> Getdata(Expression<Func<InvoiceHeader, bool>> predicate) { return AccountsContext.InvoiceHeaders.Include("Company").Include("Currency") .Include("BusinessPartnerRoleList").Include("DocumentType") .Where(predicate); }

.....

En mi código estoy usando como abajo

Expression<Func<InvoiceHeader, bool>> predicate = PredicateBuilder.True<InvoiceHeader>(); predicate = predicate.And(o => o.CompanyId == oInvoiceHeader.CompanyId); List<InvoiceHeader> lstInvheader=Getdata(predicate).ToList();

Al hacer esto estoy obteniendo la excepción. [System.NotSupportedException] --- {"El tipo de nodo de expresión LINQ ''Invocar'' no es compatible con LINQ para entidades."}


Las consultas de Linq a EF se traducen a SQL. esa excepción significa que el tiempo de ejecución no puede traducir su código en una consulta SQL porque es algo que no se admite en SQL.

puede cambiar su código para omitir las partes que no admite SQL, o puede extraer datos de la base de datos primero llamando a .AsEnumerable () como a continuación, luego puede hacer todo lo que sea, ya que es Linq-to-Objects

public IEnumerable<InvoiceHeader> Getdata(Expression<Func<InvoiceHeader, bool>> predicate) { return AccountsContext.InvoiceHeaders.Include("Company").Include("Currency") .Include("BusinessPartnerRoleList").Include("DocumentType") .AsEnumerable() .Where(predicate); }