所以我试图在LINQ
的子项中包含多个嵌套属性var templates = context.Templates
.Include(t => t.template_fields)
.Include(t => t.templateinstances.Select(ti => ti.templateinstance_fields))
.Include(t => t.templateinstances.Select(ti => ti.templateinstance_categories.Select(tic => tic.category)))
.ToList();
但是当我多次包含t.templateinstances时,在调用ToList()时会出现NullPointerException。
如果t.templateinstances仅包含一次,则没有问题。
答案 0 :(得分:0)
您应该检查可能的null属性。应该是Perhabs;
var templates = context.Templates
.Include(t => t.template_fields)
.Include(t => t.templateinstances.Where(ti => ti != null).Select(ti => ti.templateinstance_fields))
.Include(t => t.templateinstances.Where(ti => ti != null && ti.templateinstance_categories != null).Select(ti => ti.templateinstance_categories.Select(tic => tic.category)))
.ToList();
答案 1 :(得分:0)
对于EF 6
using System.Data.Entity;
query.Include(x => x.Collection.Select(y => y.Property))
有关更多示例,请参阅Remarks。
确保添加using System.Data.Entity;
以获取带有lambda的Include
版本。
如果您使用的是EF Core,则可以使用新方法ThenInclude
query.Include(x => x.Collection)
.ThenInclude(x => x.Property);