我在這裏與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 –