我正在EF4.1上進行lambda選擇,包括我當前語句中的另一個相關DBSet。C#實體框架4.1 Lambda包含 - 僅選擇特定的包含值
return dbEntity.GameTypes.Include(a => a.Draws)
.Where(d => d.IsActive == true)
.ToList();
我有兩類:
//simplified versions of the classes
public class GameType
{
public Nullable<bool> IsActive { get; set; }
public virtual ICollection<Draw> Draws { get; set; }
}
public class Draw
{
public int DrawID { get; set; }
public int GameTypeID { get; set; }
public System.DateTime DrawDate { get; set; }
}
但我只希望每個遊戲類型的下一個即將到來的平局。基本上我想要做這樣的事情
return dbEntity.GameTypes.Include(a => a.Draws.Where(aw => aw.DrawDate > System.DateTime.Now)
.OrderBy(ao => ao.DrawDate)
.First())
.Where(d => d.IsActive == true)
.ToList();
但它給我:
包含路徑表達式必須引用的類型定義的導航屬性。使用虛線路徑作爲參考導航屬性,使用Select運算符作爲集合導航屬性。
是這樣的事情可能或我需要過濾後的結果?然後,我還想通過最新的Draw.DrawDate命令得到總體結果。如果任何人都能以適當的方式向我展示我會變得格格不入。
您可以做。僅包括導航屬性。 Peter Hancock的查詢很好,除非你不需要在該查詢中執行Include。 –
我認爲這取決於是否啓用延遲加載和代理創建 - 如果它們是,則不需要包含 - 如果它們不是,則包含爲 –
從EntityFramework 4.1開始,您必須使用System.Data.Entity:using System.Data.Entity ... MyDBContext.MySet.Include(o => o.MyAssociation) –