子项导航属性的Where子句

时间:2018-10-24 14:28:23

标签: linq-to-entities navigation-properties

我尝试根据多层子导航属性查询带有“ where子句”的表。

我有:

  • table导航属性到:
    • 表B的导航属性为:
      • 表C

所以我尝试:

var query = context.TableA.where(a => a.TableB_navProperties.where(b => b.TbableC_navProperties.where(c => c.prop=="testCondition")));

但是此查询不正确:visual studio说: “不可能将system.collection.generic.IEnumerable 转换为bool”

如何查询带有子级导航属性的子项的表?

谢谢

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。对于属于集合的导航属性,请使用Any()而不是where():

var query = context.TableA.where(a => a.TableB_navProperties.Any(b => b.TbableC_navProperties.Any(c => c.prop=="testCondition"))); 

此解决方案有效,但是生成的sql使用大量的“ Exist子查询”,因此我认为效率不是很高。