我有一个MVC3程序,我想在其中查询数据库,然后根据返回的IQueryable
但查询构建一个新的IQueryable
对象,该对象将包含原始IQueryable
中的项目但稍微后处理。
我当然可以在第一时间构建一个更好的查询,但问题是我需要的后期处理在SQL中并不容易,但我会在C#中做到这一点。
所以实际上我需要一个类似容器的类来实现IQueryable
,我不喜欢自己实现它的想法。
是否有一个实现IQueryable
的现成课程?
答案 0 :(得分:2)
你的问题很奇怪。 如果要预处理所有结果,则必须首先加载它们并进行预处理。然后,它们将存储在IEnumerable中。这似乎是一个好主意,如果有合理数量的结果,并且您不需要服务器排序等。
另一种方法是将Select
附加到IQueryable并在其中进行一些处理而不加载实际数据(处理将在服务器端进行)。但在这种情况下,您使用的ORM实现非常有限。
接下来,我会做一些扩展处理逻辑,仍然通过IQueryable得到结果是将所有处理逻辑放入SQL服务器中的表值函数(或视图),然后将其映射到ORM,并查询它
IQueryable的整个想法是它没有数据,它只是在枚举时执行的DB查询的定义。