我的BLL中有一些方法可以从数据库中获取一些记录并将其传递给UI,以便绑定到Gridview或...等数据控件。
我可以选择IQueryable<t>
或Ilist<t>
方法的返回数据类型
我的问题是哪一个对我更好,为什么?
其实我不知道这两种类型之间的区别,我不知道哪种情况最适合哪种情况?
谢谢
答案 0 :(得分:5)
不同之处在于IList<T>
代表实际的结果列表。它将被“物化” - 从数据库中提取到内存中。 (理论上它只是一个界面 - 它可以仍然推迟一切......)
IQueryable<T>
表示查询 - 例如,您之后仍然可以撰写额外的查询位。然后,您可以通过询问结果来评估查询。这将使用延迟执行,仅在实际需要时请求结果。
至于你应该返回...如果你只想直接绑定到UI,将它转换为列表可能是有意义的,这样你就可以更好地控制查询实际执行的时间。另一方面,如果您希望能够调整查询,使用IQueryable<T>
将为调用者提供更大的灵活性。
答案 1 :(得分:0)
我建议ICollection或IList
IQueryable - 提供评估针对特定数据源的查询的功能,其中数据的类型是已知的。
您可以随时调用ICollection.AsQueryable()。