我在这里与LINQLINQ复杂的查询导航属性
从我的数据库获取数据有一个问题,我有两个表Team
和TeamMember
,这是由1-N关系有关。 我正在使用实体框架,并为每个表有一个属性为每列的一个实体。此外,在团队实体中,作为此关系的结果,导航属性为TeamMember
。
我想要做一个查询,在那里我可以通过他们的团队成员获得我所有的团队。
result = (from t in this.context.Teams
orderby t.Name
select t)
.Include("TeamMembers")
工作正常。我收到了一组团队实体,其中Team.TeamMember
属性填充了每个团队成员的数据。
问题是,当我想要执行一个更复杂的查询,如过滤TeamMembers的查询。
例如,两个表都有一列EndDateTime
。如果我想让所有未结束的团队和团队成员(他们的结束日期时间不为空),我不知道该怎么做。
使用此查询我将过滤只是团队,但不是团队成员。
result = (from t in this.context.Teams
where t.EndDateTime == null
orderby t.Name
select t)
.Include("TeamMembers")
.ToList();
有什么想法吗?
我有点“解决”它做了查询后的成员过滤器,以收集。像这样:
//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);
}
}
但我不认为这是一个很好的解决方案。
[条件包括在LINQ到实体?]的可能重复(http://stackoverflow.com/questions/1085462/conditional-include-in-linq-to-entities) –
+1这是一个很好的问题和一个与EF最不明显的事情,但它是重复的。我认为还有其他一些重复。 –
另一个重复:http://stackoverflow.com/questions/1680863/linq-include-with-where-clause –