C# 实体框架从外部表中排除记录

C# 实体框架从外部表中排除记录,c#,foreign-key-relationship,C#,Foreign Key Relationship,根据条件从外部表中排除记录时出现问题 //此查询返回MainTable中引用的所有表中的所有内容 var query = db.MainTable.Where(x => x.ID == 123) 如何根据外部表中的状态字段从其中一个外部表中排除某些记录? 大概是这样的: var query = db.MainTable.Where(x => x.ID == 123 && y => y.ForeignTable.Status == false)

根据条件从外部表中排除记录时出现问题

//此查询返回MainTable中引用的所有表中的所有内容

    var query = db.MainTable.Where(x => x.ID == 123)
如何根据外部表中的状态字段从其中一个外部表中排除某些记录? 大概是这样的:

    var query = db.MainTable.Where(x => x.ID == 123 && y => y.ForeignTable.Status == false)

谢谢。

既然您说您已经建立了正确的关系,并且您的示例似乎表明您拥有的是单一关系(不是对ICollection的引用),那么您应该能够做到:

var query=db.MainTable.Where(x=>x.ID==123&&x.ForeignTable.Status==false)

如果您使用的是ICollection,则必须执行以下操作:

    var query = db.MainTable.Where(x => x.ID == 123 && y => y.ForeignTable.Status == false)
var query=db.MainTable.Where(x=>x.ID==123&&x.ForeignTable.All(y=>y.Status==false))

我认为这是可行的,但还没有测试过


您还可以研究一些更复杂的联接所需的语法。但是,它可能非常冗长,对于简单连接,上面的方法应该可以很好地工作

既然你说你已经建立了正确的关系,而且你的例子似乎表明你拥有的是一种单一的关系(不是对ICollection的引用),那么你应该能够做到:

var query=db.MainTable.Where(x=>x.ID==123&&x.ForeignTable.Status==false)

如果您使用的是ICollection,则必须执行以下操作:

    var query = db.MainTable.Where(x => x.ID == 123 && y => y.ForeignTable.Status == false)
var query=db.MainTable.Where(x=>x.ID==123&&x.ForeignTable.All(y=>y.Status==false))

我认为这是可行的,但还没有测试过


您还可以研究一些更复杂的联接所需的语法。但是,它可能非常冗长,对于简单连接,上面的方法应该可以很好地工作

您是否在对象中放置了外键关系,即ICollection foreignItems或public virtual ForeignTable foreignItem?@MiltoxBeyond,是的,我有。您可能只需要执行一个连接来限制。类似这样的事情:您的对象中是否放置了外键关系,即ICollection foreignItems或公共虚拟ForeignTable foreignItem?@MiltoxBeyond,是的,我有。您可能只需执行一个连接来限制。大概是这样的: