0


我的 BLL 中有一些方法可以从数据库中获取一些记录并将其传递给 UI 以绑定到 GridviewIQueryable<t>Ilist<t>.
我的问题是哪一个更适合我,为什么?其实我不知道这两种类型之间的区别,我不知道哪一种最适合哪种情况?

谢谢

4

2 回答 2

5

不同之处在于它IList<T>代表了一个实际的结果列表。它将被“物化”——从数据库中提取到内存中。(理论上它当然只是一个接口 - 它仍然可以推迟一切......)

IQueryable<T>代表一个查询- 例如,您仍然可以在之后编写额外的查询位。然后,您可以通过询问结果来评估查询。这将使用延迟执行,仅在实际需要时才请求结果。

至于你应该返回哪个......如果你只是要直接绑定到 UI,将它转换为列表可能很有意义,这样你就可以更好地控制查询的实际执行时间。另一方面,如果您希望能够调整查询,使用IQueryable<T>将给调用者更多的灵活性。

于 2010-06-24T09:25:30.207 回答
0

我建议 ICollection 或 IList

IQueryable - 提供针对数据类型已知的特定数据源评估查询的功能。

您可以随时调用 ICollection.AsQueryable()。

于 2010-06-24T09:28:52.370 回答