tengo un problema aquí con la obtención de datos de mi base de datos con LINQLINQ complejo propiedad de navegación consulta
Tengo dos tablas Team
y TeamMember
, los cuales están relacionados por 1-N relación. Estoy usando Entity Framework y tengo una entidad para cada una de las tablas con una propiedad para cada columna. También en la entidad Team hay una propiedad de navegación TeamMember
como resultado de esta relación.
Deseo hacer una consulta en la que pueda obtener todo mi equipo con los miembros de su equipo.
result = (from t in this.context.Teams
orderby t.Name
select t)
.Include("TeamMembers")
Eso funciona bien. Obtengo una colección de entidades de equipo con la propiedad Team.TeamMember
poblada con los datos del miembro de cada equipo.
El problema es cuando quiero hacer una consulta más compleja como filtrar la consulta para los Miembros de equipo.
Por ejemplo, ambas tablas tienen una columna EndDateTime
. Si quiero obtener todos los miembros del equipo y del equipo que no han finalizado (su fecha de finalización no es nula), no sé cómo hacerlo.
Con esta consulta voy a filtrar solo los equipos, pero no los miembros del equipo.
result = (from t in this.context.Teams
where t.EndDateTime == null
orderby t.Name
select t)
.Include("TeamMembers")
.ToList();
¿Alguna idea?
tipo de "resolverlo" haciendo el filtro del miembro después de la consulta, a la colección. De esta manera:
//Filter out the End dated care coordiantors
var careCoordinatorsToDelete = new List<CareCoordinator>();
foreach (var team in result)
{
careCoordinatorsToDelete.Clear();
foreach (var careCoordinator in team.CareCoordinators)
{
if (careCoordinator.EndDateTime != null)
careCoordinatorsToDelete.Add(careCoordinator);
}
foreach (var toDelete in careCoordinatorsToDelete)
{
team.CareCoordinators.Remove(toDelete);
}
}
Pero no creo que esta sea una buena solución.
posible duplicado de [incluir condicional en linq a entidades?] (Http://stackoverflow.com/questions/1085462/conditional-include-in-linq-to-entities) –
+1 Esta es una gran pregunta y una de las cosas menos obvias que hacer con EF, pero es un duplicado. Creo que hay algunos otros duplicados también. –
otro duplicado: http://stackoverflow.com/questions/1680863/linq-include-with-where-clause –