区别.其中(过滤器表达式).FirstOrDefault() 和 .FirstOrDefault(filter expr

本文关键字:FirstOrDefault filter expr 表达式 其中 过滤器 区别 | 更新日期: 2023-09-27 18:31:19

在实体框架中,执行操作有什么区别:

db.Table.Where(filter).FirstOrDefault()

db.Table.FirstOrDefault(filter)

我猜第一个先应用过滤器,然后获取第一个记录。第二个从表中获取所有记录,然后应用过滤器,效率更低。你能确认我这是正确的还是两者都等效吗?

此致敬意

区别.其中(过滤器表达式).FirstOrDefault() 和 .FirstOrDefault(filter expr

没有。它们是等效的。

但是,通常应将链接保持在最低限度。因此,第二个被认为是"正确的"。

这两者在内存和 EF 中具有相同的性能。

在内存中,第一个懒惰地获取结果,因此它并不比第二个慢

在 EF 或 LINQ2SQL 中,查询将完整转换为 SQL,因此在两个实例中,只会从数据库中选择一个结果。若要查看发生了什么,请在 EF 中启用 SQL 日志记录,并观察生成的 SQL 是否相同。

但是,具有单独Where的代码更类型化,因此首选第二种形式。