我会尝试尽可能简单地指定它,我正在使用EF7。
我有两个表--Report和ReportCategories,这些表通过reportCategoryMap表链接,该表对两个表都有外键约束(两个表的EF数据模型都有reportcategorymap的hashset)
我想过滤报告信息,但还想过滤回来的报告类别。为了简化我的查询,它如下
_dbContext.Reports.Where(r => r.reportId == 1)
.Select(r => new Report
{ReportId = r.ReportId,
ReportCategoryMap = r.ReportCategoryMap.Where(rc => !rc.IsDeleted)
}
问题是返回的ReportCategoryMap集合中的ReportCategory对象始终为空。我试过加入
_dbContext.Reports.Include(r => r.ReportCategoryMap).ThenInclude(rcm => rcm.ReportCategory).Where ....
但这不起作用。
如果我删除了Select,则值会返回,但不删除Category时不会过滤CategoryMap。在查询运行后我总是可以使用过滤逻辑,但希望我做一些愚蠢的事情,有人可以在linq查询中帮助我
希望这是有道理的。