Edit2:
在最终能够对两者进行分析之后,在我的情况下,.AsQueryable() 似乎比 Expression.Compile() 稍快。
原始问题:
我已经实现了一些数据库表(as List<T>
)的缓存,我需要使用与查询自身Expression<Func<T, bool>>
时相同的方式进行查询。Table<T>
这些中最快/最好的方法是什么:
List<T>.AsQueryable().FirstOrDefault(Expression<Func<T, bool>>)
或者
List<T>.FirstOrDefault(Expression<Func<T, bool>>.Compile())
?
编辑:将 Where 更改为 FirstOrDefault,因为这是我正在使用的方法。我想我写这个问题的时候有点累。FirstOrDefault 会像 Where 一样检查每个项目,还是会在第一次点击时停止(如果有的话)?