我有这个Keuring
类,我有一个问题,包括使用linq在Testresultaten
集合属性上的导航项。
public partial class Keuring
{
public Keuring()
{
Testresultaten = new HashSet<Testresultaten>();
}
//Simple properties here
//Complex properties below
public virtual ICollection<Testresultaten> Testresultaten { get; set; }
public virtual Gereedschap Gereedschap { get; set; }
}
以下是Testresultaten
类:
public partial class Testresultaten
{
//Simple properties here
//Complex properties below
public virtual Test Test { get; set; }
public virtual Keuring Keuring { get; set; }
}
以下是Gereedschap
类:
public partial class Gereedschap
{
public Gereedschap()
{
Keuring = new HashSet<Keuring>();
}
//Simple properties here
//Complex properties below
public virtual ICollection<Keuring> Keuring { get; set; }
public virtual Debiteur Debiteur { get; set; }
}
此声明可以正常使用:
var keuringEntry = db.Keuring.Include(item => item.Gereedschap).Include(item => item.Testresultaten).SingleOrDefault(item => item.key = "keyvalue");
但是当我像这样添加额外Include
时:
Include(item => item.Testresultaten.Select(subItem => subItem.Test))
该陈述给出了一个错误:
var keuringEntry = db.Keuring.Include(item => item.Gereedschap).Include(item => item.Testresultaten.Select(subItem => subItem.Test)).SingleOrDefault(item => item.key = "keyvalue");
错误: 属性表达式'x =&gt; {来自[x]中的Testresultaten subItem .Testresultaten select [subItem] .Test}'无效。表达式应代表属性访问:'t =&gt; t.MyProperty”。
Test
类中的Testresultaten
var是属性而不是字段。我究竟做错了什么?它可以像Gereedschap
Keuring
一样访问
答案 0 :(得分:0)
您需要按照以下所示进行操作。
var keuringEntry = db.Keuring.Include(item => item.Gereedschap)
.Include(item => item.Testresultaten)
.ThenInclude(subItem => subItem.Test)
.FirstOrDefault(item => item.key = "keyvalue");