使用DefaultIfEmpty对Linq Join的性能影响

时间:2019-03-28 08:19:24

标签: c# performance linq

我一直在玩left joins in linq,发现有必要使用DefaultIfEmpty()才能将联接从inner更改为left

看着DefaultIfEmpty()的返回类型,我从性能角度开始感到担忧,因为我看到它正在返回IEnumerable,我们知道caches the data locally。在我的场景中,我正在进一步处理左连接的数据发布,理想情况下是将类型保留为IQueryable,但是当我将解决方案按原样部署到我的开发环境时,我很惊讶地看到直观/最小的性能影响。

为什么DefaultIfEmpty()似乎没有显着的性能影响,或者我不能正确了解情况?

编辑: 下面是我的代码: enter image description here

1 个答案:

答案 0 :(得分:2)

它们都是await的{​​{1}}和IQueryable重载。 IEnumerable版本用于内存Linq,DefaultIfEmpty()版本用于带有EF表达式的表达式。

如果您以IEnumerable开头并以IQueryable结尾,那么您将沿一行使用Queryable某处

enter image description here