说白了 DBSet
IQueryable这个查询对象接收的是Expression<Func<T,bool>>
,也就是一个表达式树,他将会把查询条件解析成SQL,在数据源提供器里面执行查询。
而List是一个集合,他接收的是一个Func<T,bool>
,也就是一个查询委托,他则是将整个DBSet加载出来放在内存之后,再进行查询,所以后者性能堪忧。
详细请查看StackOverflow上面的这两篇问题:
Func<t, bool> vs Manually expression performance in C# lambda