是否存在与使用IQueryable
相关的任何性能问题?
此外,如果我使用光标而不是使用IQueryable
(更好)
IQueryable
vs IEnumerable
vs IList
?
我使用MongoDB作为我的数据库。谢谢
答案 0 :(得分:4)
这些只是不同的接口,并且由于接口不包含任何实现,因此对您使用的性能无关紧要。
当您遍历值时,将使用实际类的枚举器,而不管您使用哪个接口来访问它。
答案 1 :(得分:4)
我不知道MongoDB C#绑定是如何工作的,但描述它通常如何工作:
使用IQueryable
时,构造表达式树,然后翻译成数据库可以理解的格式,然后在数据库服务器中执行。
与直接以数据库理解的格式编写查询相比,这通常具有较小的开销(构造表达式树并对其进行翻译)。
使用IEnumerable
个委托,而不是表达式。它需要遍历整个数据集,然后使用Linq-To-Objects进行过滤。这要慢得多。