2012-03-16 77 views
0

我有一个MVC3程序,我想查询一个数据库,然后根据IQueryable返回,但查询生成一个新的IQueryable对象,该对象将包含来自原始IQueryable的项目,但稍有后处理。IQueryable是否可以用作容器?

我当然可以在第一时间建立一个更好的查询,但问题是我需要的后处理在SQL中不是那么容易,但我会在C#中做到这一点。

所以实际上我需要一个类似容器的类来实现IQueryable,我不喜欢自己实现它的想法。

有没有准备好的课程,实施IQueryable

回答

2

你的问题很奇怪。 如果要预处理所有结果,则必须首先加载它们并进行预处理。然后,它们将被存储在IEnumerable中。这似乎是一个好主意,如果有合理数量的结果,并且您不需要服务器排序等。

另一种方法是将Select附加到您的IQueryable并在其中进行一些处理而不加载实际数据(处理将在服务器端进行)。但是在这种情况下,您使用的ORM实现非常有限。

接下来的另一种方式,我会做一些扩展的处理逻辑,并通过IQueryable的仍然得到的结果是把所有的处理逻辑到表值函数(或视图),在SQL服务器,然后将其映射到你的ORM,并查询它。

IQueryable的整体思想是它没有数据,它只是数据库查询的定义,将在枚举时执行。

相关问题