阻止EF进行两次查询

时间:2019-12-06 16:51:23

标签: sql entity-framework orm

是否可以防止EF在以下查询中进行两次查询?

var regitriesNames = 
                from registryView in registryViewRepository.GetAll()
                where (
                    from registryReport in registryReportRepository.GetAll()
                    where registryReport.ReportId == reportId
                    select registryReport.RegistryViewId
                ).Contains(registryView.Id)
                select registryView.Name;

查询工作正常。我唯一要避免的是GetAll()的双重使用。

那么,有可能以某种方式改进查询吗?

我有两个实体: RegistryView Report ,并且我有一个实体代表了它们之间的 RegistryReport 。 >

1 个答案:

答案 0 :(得分:2)

请选中此一项。

  

代码

var lstdata = registryViewRepository.GetAll();
var regitriesNames = from registryView in lstdata 
                where (
                    from registryReport in lstdata
                    where registryReport.ReportId == reportId
                    select registryReport.RegistryViewId
                ).Contains(registryView.Id)
                select registryView.Name;