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

151
Vistas
Incluir colección de filtros secundarios

Tengo algunas dificultades para agregar alguna condición de filtro para los elementos incluidos en mi consulta LINQ. mi consulta es como

 var item = _Context.Order.Include("Inner") .Include("Inner.first") .Include("Inner.second") .Where(x => ( !(x.IsDeleted) && (x.IsActive) && (x.itemid == id))).FirstOrDefault();

En el código anterior, "Interior" es otra lista de elementos. Ahora necesito filtrar elementos internos. Solo necesito el elemento interno con la condición de filtro inner.isDeleted = true.

La consulta debe devolver una clase como,

 public class Order { public string Name { get; set; } public List<InnerDetails> Inner{ get; set; } public bool IsDeleted { get; set; } }

y la clase InnerDetails como

 public class InnerDetails { public string Sample { get; set; } public bool IsDeleted { get; set; } public int firstId { get; set; } public int secondID { get; set; } public First first{ get; set; } public Second second{ get; set; } }

¿Alguien puede sugerirme un mejor enfoque para hacer esto porque soy nuevo en LINQ y EF?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Descargo de responsabilidad: soy el propietario del proyecto Entity Framework Plus

La función EF+ Query IncludeFilter permite filtrar entidades relacionadas.

 var item = _Context.Order .IncludeFilter(x => x.Inner.Where(y => y.IsDeleted)) .IncludeFilter(x => x.Inner.Where(y => y.IsDeleted).Select(y => y.first)) .IncludeFilter(x => x.Inner.Where(y => y.IsDeleted).Select(y => y.second)) .Where(x => ( !(x.IsDeleted) && (x.IsActive) && (x.itemid == id))).FirstOrDefault();

Nota: No puede mezclar Incluir e IncluirFiltro.

Wiki: Incluir filtro de consulta de EF+

EDITAR: Responder a la subpregunta

Pero podemos lograr esto usando solo EF

Sí, bajo el capó, mi biblioteca usa una solución similar a la proyección

 var item = _Context.Order.Select(x => new { Order = x, Inner = x.Inner.Where(y => y.IsDeleted), first = x.Inner.Where(y => y.IsDeleted).Select(y => y.first) second = x.Inner.Where(y => y.IsDeleted).Select(y => y.second) }) .Where(x => ( !(x.IsDeleted) && (x.IsActive) && (x.itemid == id))) .FirstOrDefault() .Select(x => x.Order) .FirstOrDefault();

Nota: el código no ha sido probado

EDITAR: Responder comentario

Encontré este problema en EF Core. ¿Va a implementar IncludeFilter también en la versión EF+Core?

A partir de la v1.10.0, el IncludeFilter de inclusión ahora es compatible con EF Core 2.x

Ver:Nota de la versión

EDITAR: Responder a la subpregunta

¿Cómo puedo incluir después de filtrar?

Todavía no tenemos un ThenInclude .

Por lo tanto, debe usar IncludeFilter nuevamente con todos los filtros y navegar por la lista o entidad que desea incluir.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede lograr esto en EF Core mismo:

 var item = ctx.Order.Include("Inner") .Select(x => x.Inner .Where(innerItem => innerItem.IsDeleted)) .FirstOrDefault();

O,

 var item = ctx.Order.Include(o=> o.Inner .Where(x => x.IsDeleted));
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