在实体框架中,有什么区别:
db.Table.Where(filter).FirstOrDefault()
或者
db.Table.FirstOrDefault(filter)
我猜第一个先应用过滤器,然后再获取第一条记录。第二个从表中获取所有记录,然后应用过滤器,效率较低。你能确认一下这是正确的还是两者都是等价的?
最好的祝福
在实体框架中,有什么区别:
db.Table.Where(filter).FirstOrDefault()
或者
db.Table.FirstOrDefault(filter)
我猜第一个先应用过滤器,然后再获取第一条记录。第二个从表中获取所有记录,然后应用过滤器,效率较低。你能确认一下这是正确的还是两者都是等价的?
最好的祝福
空无一人。它们是等价的。
但是,通常,您应该将链接保持在最低限度。因此,第二个被认为是“正确的”。
这两者在内存和 EF 中具有相同的性能。
在内存中,第一个是懒惰地获得结果,所以它并不比第二个慢。
在 EF 或 LINQ2SQL 中,查询被完整地转换为 SQL,因此在两种情况下都只能从数据库中选择一个结果。要查看发生了什么,请在 EF 中启用 SQL 日志记录,并观察生成的 SQL 是否相同。
但是,带有单独的代码的Where
类型更多,因此首选第二种形式。