问题描述
将下面的Linq查询与Entity Framework Core 3和EntityFramework Core Plus库一起使用,我希望我将在IsActive布尔值设置为true的所有项中返回1 Factor。相反,我得到的是1因素和所有项,无论IsActive值是true还是false。 为什么?
public class Factor
{
public Factor()
{
Items = new List<Item>();
}
public bool IsActive{ get; set; }
public int FactorId { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
public class Item
{
[ForeignKey("Factor")]
public int? FactorId { get; set; }
public virtual Factor Factor { get; set; }
public bool IsActive{ get; set; }
public int ItemId { get; set; }
}
Factors
.IncludeFilter(a => a.Items.Where(b => b.IsActive))
.FirstOrDefault(a=>a.FactorId == 1140)
解决方法
此部分无效:
.IncludeFilter(a => a.Items.Where(a => a.IsActive))
您使用了两次无法编译的“ a”。
也许是由于错误,您当前正在检查因子是否为IsActive
而不是所有项目。