次のコードは私のために働きます:
var query0 = DB.Plan
.Include("UserCreate")
.Include("UserUpdate")
.Include("PlanTemplate")
.Select(p => new
{
plan = p,
planItems = p.PlanItems.Where(pi => pi.IsCommited == true && pi.IsLocked == false)
});
var query2 = query0.AsEnumerable().Where(m => m.planItems.Count() > 0).Select(m => m.plan);
しかし、私が欲しかった別のエンティティに関連する planItems では、次のコードは機能しません。
var query0 = DB.WorkEffortPlan
.Include("UserCreate")
.Include("UserUpdate")
.Include("PlanTemplate")
.Select(p => new
{
plan=p,
planItems = DB.PlanItem
.Include("UserResponsiblePerson")
.Include("TemplateItem")
.Include("ItemState")
.Where(pi => pi.PlanID == p.PlanID && pi.IsCommited == true && pi.IsLocked == false)
});
var query2 = query0.AsEnumerable().Where(m => m.planItems.Count() > 0).Select(m => m.plan);
vs コンパイラは正常に実行されますが、このコードを実行すると、query0 で NullReferenceException が発生します。
子エンティティとそれに関連するエンティティをフィルタリングするための linq ソリューションはありますか?