Asp.net IQueryable<;t>;或IList<;t>;

Asp.net IQueryable<;t>;或IList<;t>;,asp.net,linq-to-sql,iqueryable,ilist,Asp.net,Linq To Sql,Iqueryable,Ilist,我的BLL中有一些方法,可以从数据库中获取一些记录并将其传递给UI,以便绑定到数据控件,如Gridview或 我可以选择方法的返回数据类型,无论是IQueryable还是Ilist 我的问题是哪一个更适合我,为什么? 事实上,我不知道这两种类型之间的区别,也不知道哪一种最适合哪种情况 谢谢不同之处在于,IList代表一个实际的结果列表。它将被“物化”——从数据库中提取到内存中。(理论上,这当然只是一个界面——它仍然可以推迟一切……) IQueryable表示一个查询-例如,您仍然可以在以后编写额

我的BLL中有一些方法,可以从数据库中获取一些记录并将其传递给UI,以便绑定到数据控件,如Gridview或
我可以选择方法的返回数据类型,无论是
IQueryable
还是
Ilist

我的问题是哪一个更适合我,为什么? 事实上,我不知道这两种类型之间的区别,也不知道哪一种最适合哪种情况


谢谢

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

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


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

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

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


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

我建议使用ICollection或IList

IQueryable—提供针对特定数据源(其中数据类型已知)评估查询的功能


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

我建议使用ICollection或IList

IQueryable—提供针对特定数据源(其中数据类型已知)评估查询的功能


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

谢谢您的解释。我也明白你的意思,并将寻找最简单的例子来实现这两件事,这将显示上述情况之间的差异。我不知道如何在类中实现接口。i、 我知道什么是接口,它们提供什么功能。但是我不知道如何使用它们。IDisposable接口,我知道它在实现时会做什么,但如何实现是我的问题,就像这个IQueryable接口一样well@Shantanu:您当然不应该自己实现
IQueryable
。这就是LINQtoSQL(或其他)的用途。请提供一个例子,可以是一个链接,表示它们的实现以及两者之间的区别。这将是一个伟大的挑战help@Shantanu这篇文章有一些关于IQueryable的有用信息,请看@Matt:url很有趣,但确实很有价值。我真的很欣赏这么好的一篇文章,也很欣赏把它当作巧克力的作者<代码>如果更简单,可以将IQueryable想象为一个a*孔(比喻)。也许是你的大学室友。你叫他洗碗。他说:“成功了。”你让他去买食品杂货。他说:“做了。”然后你说,“不,你没有。”然后他一下子做了所有的事情,然后说,“是的,我做了。现在。”漂亮的线条谢谢解释。我也明白你的意思,并将寻找最简单的例子来实现这两件事,这将显示上述情况之间的差异。我不知道如何在类中实现接口。i、 我知道什么是接口,它们提供什么功能。但是我不知道如何使用它们。IDisposable接口,我知道它在实现时会做什么,但如何实现是我的问题,就像这个IQueryable接口一样well@Shantanu:您当然不应该自己实现
IQueryable
。这就是LINQtoSQL(或其他)的用途。请提供一个例子,可以是一个链接,表示它们的实现以及两者之间的区别。这将是一个伟大的挑战help@Shantanu这篇文章有一些关于IQueryable的有用信息,请看@Matt:url很有趣,但确实很有价值。我真的很欣赏这么好的一篇文章,也很欣赏把它当作巧克力的作者<代码>如果更简单,可以将IQueryable想象为一个a*孔(比喻)。也许是你的大学室友。你叫他洗碗。他说:“成功了。”你让他去买食品杂货。他说:“做了。”然后你说,“不,你没有。”然后他一下子做了所有的事情,然后说:“是的,我做了。现在。”