繁体   English   中英

如何编写linq表达式以根据状态过滤导航属性?

[英]how to write linq expression to filter navigational property based on status?

父类别包含子类别列表,子类别包含子类别列表。 现在,我想获取所有父类别(如果其状态为true)以及子类别。 提取时,我还要检查子类别的状态。 我目前的查询是

 db.Categories.Where(x => x.Status)
.Include(x=>x.SubCategories)
. OfType<ParentCategory>().ToList(); 

如何在此查询中检查子类别的状态?

尝试LINQ的SelectMany()方法。 它用于展平嵌套的集合。 无需使用嵌套的for循环,我们可以以更“ LINQ”的方式完成任务。

前例如下:

Master m1 = new Master() { name = "A", lstObj = new List<obj> { new obj { i = 1, s = "C++" }, new obj { i = 1, s = "C#" }, new obj { i = 1, s = "Java" } } };

Master m2 = new Master() { name = "A", lstObj = new List<obj> { new obj { i = 4, s = "PHP" }, new obj { i = 5, s = "Ruby" }, new obj { i = 6, s = "Perl" } } };

List<Master> lstMasters = new List<Master> { m1, m2 };
var result = lstMasters.SelectMany(m => m.lstObj).Where(o => o.s == "PHP");

只需将Master类替换为您自己的Master类即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM