2

在实体框架中,有什么区别:

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

或者

db.Table.FirstOrDefault(filter)

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

最好的祝福

4

2 回答 2

7

空无一人。它们是等价的。

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

于 2013-09-13T20:24:08.593 回答
4

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

在内存中,第一个是懒惰地获得结果,所以它并不比第二个慢。

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

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

于 2013-09-13T20:24:16.610 回答