IQueryable <t>或IList <t> </t> </t>

时间:2010-06-24 09:18:28

标签: asp.net linq-to-sql iqueryable ilist

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

谢谢

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

我建议ICollection或IList

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

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