1

我刚读了这个问题,它让我想到了为什么我需要IEnumerable在检索数据时使用。我了解 和 之间的区别IQueryableIEnumerable但是IEnumerable对于允许过滤的数据,对象会更好吗?例如,一个包含日期的记录表,所以我可以按日期排序。

4

2 回答 2

4

如果您在内存中有对象——而不是来自其他数据源,例如数据库——使用IEnumerable<T>。这样,内置的 LINQ to Objects 将自动工作。

您甚至可以通过编写自定义扩展方法并使用yield returnand将 LINQ 扩展到对象yield break

如果您使用的是 Entity Framework 或其他正在使用的系统IQueryable<T>,我会一直保留它,IQueryable<T>直到您需要它作为对象。

于 2012-04-11T12:59:55.047 回答
0

这取决于。

如果您想首先接收所有数据,然后过滤返回的对象集,请使用 IEnumerable。

如果你想在数据库上启用过滤(例如 Linq-to-sql / Entity Framework),最好使用 IQueryable。

于 2012-04-11T13:15:32.707 回答