Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

551
Vistas
EF Core 3.1: el filtrado de inclusión genera un error "La expresión lambda utilizada dentro de Incluir no es válida".

Tengo la tabla Item (Principal) y la tabla ItemAlt (Sub (Lista)) Quiero obtener todas las filas alternativas de elementos donde:

  1. ItemAlt.WarehouseId es igual al parámetro warehouseId

  2. Item.Id es igual al parámetro itemId

     public async Task<Item> GetItemWithAlt(int itemId, int warehouseId) { var query = from i in _dbContext.Item.Include(a => a.ItemAlt.Where(c => c.WarehouseId == warehouseId && c.IsActive == true)) where i.IsActive.Equals(true) && i.Id.Equals(itemId) select i; return await query.SingleOrDefaultAsync(); }

el problema es que arroja la excepción " La expresión lambda utilizada dentro de Incluir no es válida " en

 .Where(c => c.WarehouseId == warehouseId && c.IsActive == true)

¿Sabes cómo solucionar este problema?

  • Ya intenté buscar el mensaje de error pero las consultas son diferentes a las mías
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Las inclusiones filtradas solo están disponibles desde EF Core 5.0, como indican los documentos :

Esta función se introdujo en EF Core 5.0.

Por lo tanto, debe actualizar su proyecto a las versiones correspondientes de .NET y EF Core o reescribir la consulta para unirse manualmente con ItemAlt filtrado.

O intente seleccionar el tipo anónimo y confíe en la corrección de la relación. Algo así (no probado):

 var result = await _dbContext.Item .Where(i => i.IsActive.Equals(true) && i.Id.Equals(itemId)) .Select(i => new { Item = i, ItemAlts = i.ItemAlt .Where(c => c.WarehouseId == warehouseId && c.IsActive == true)) .ToList() } .SingleOrDefaultAsync(); return result?.Item;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda