实现LINQ提供程序

时间:2015-10-13 04:59:14

标签: c# linq

我目前正在为自己的教育目的实施LINQ提供程序。我最近设法让Count()扩展工作,到目前为止一直很好。

现在我的问题不是寻求帮助,而只是请求澄清。

要创建提供程序,需要实现两个接口:IQueryProviderIOrderedQueryable<>之类的接口。 MSDN明确了如何实现它们,但有一点仍让我感到困惑。

为什么这些接口是由单独的类实现的,即使每个IOrderedQueryable实例都引用自己的IQueryProvider实例,并且这两个对象实际上(间接地)引用相同的数据?

他们真的需要分开吗?

此外。我可以像下面这样组合它们:class Source<RowContract> : IQueryProvider, IOrderedQueryable<RowContract> - 以简化类型信息访问。这个实现现在正常工作,看起来比&#34;单独的类&#34;更简单明了。做法。

我想知道我的组合实施是否存在缺陷。或者,它可能有效吗?

任何解释都会受到重视。

1 个答案:

答案 0 :(得分:3)

msdn所述,IQueryProvider专注于创建和执行查询。鉴于IQueryable是被查询的东西。将它们全部放在一起可能会将类似的代码放在一起,但它最终并不尊重关注点的分离。