我刚刚阅读了这篇question,它让我思考为什么在检索数据时需要使用IEnumerable
。我了解IQueryable
和IEnumerable
之间的差异,但是对于允许过滤的数据,IEnumerable
对象会更好吗?例如,一个包含日期的记录的表,所以我可以对日期进行排序。
答案 0 :(得分:4)
如果您的对象在内存中 - 而不是来自其他数据源(如数据库) - 请使用IEnumerable<T>
。这样,内置的LINQ to Objects将自动运行。
您甚至可以通过编写自定义扩展方法并使用yield return
和yield break
将LINQ扩展为对象。
如果您正在使用Entity Framework或其他使用IQueryable<T>
的系统,我会将其保留为IQueryable<T>
,直到您需要它作为对象。
答案 1 :(得分:0)
取决于。
如果您想首先接收所有数据,然后过滤返回的对象集合,请使用IEnumerable。
如果要在数据库上启用过滤(例如Linq-to-sql / Entity Framework),请更好地使用IQueryable。