【发布时间】:2020-03-19 17:32:13
【问题描述】:
所以在我的查询中,我有多个 then include 以包含所有相关数据。在最后一个包含语句中,我想添加一个条件,但由于我的 linq 语句,我得到了“invalid lambda expression 响应。
Class Sample1
{
public int Id { get; set; }
public ICollection<Sample2> S2 { get; set;}
}
Class Sample2
{
public Sample3 S3 { get; set; }
public Sample1 S1 { get; set;}
}
Class Sample3
{
public int Id { get; set; }
public ICollection<Sample4> S4 { get; set;}
}
Class Sample4
{
public Sample3 S3 { get; set; }
public Sample5 S5 { get; set;}
}
Class Sample5
{
public int Id { get; set; }
public bool isPresent { get; set;}
}
我需要的是当我查询 Sample 1 时,我希望它包含 Sample 3 之前的所有内容,但仅包含 Sample 4 if Sample5.IsPresent 是真的。这是我要发送的查询
var sample = await dbcontext.Sample1.Include(s1 => s1.S2).ThenInclude(s2 => s2.S3)
.ThenInclude(s3 => s3.S4.Where(s4 => s4.S5.isPresent)).FirstOrDefaultAsync(s => s.Id==id);
我曾尝试使用 Any 而不是 Where,但这也没有用。 我真的很感激这方面的任何帮助。我已经尝试按照相关问题的一些答案的建议进行操作,但似乎没有任何效果。
【问题讨论】:
标签: c# asp.net entity-framework asp.net-core entity-framework-core