Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda