使用自定义Comparer与Linq IQueryable

时间:2014-04-25 17:50:37

标签: c# asp.net sql linq

我正在尝试在使用Linq生成的查询上使用自定义比较器。我看过很多文章说你不能这样做,但是当我看到Distinct扩展方法的签名时,我看到:(这个IQueryable源,IEqualityComparer比较器)..

为什么有一个构造函数接受自定义比较器,如果它不能通过Linq转换为sql?

提前致谢。

1 个答案:

答案 0 :(得分:1)

原因是linq不仅仅是linq到sql,linq到实体或其他任何东西。

使用可查询时,您始终拥有提供程序。提供者不需要支持linq可以执行的所有操作。这是一个这样的例子。

之所以存在,是因为不同的提供商可能会选择支持一组不同的功能,例如自定义比较器。

一般来说,我相信IEnumerable通过LINQ可以对IQueryable完成所有工作。

我同意这个可能是更难转换为提供商链接的内容之一,但EnumerableQueryable之间的对称性以及某人可能的事实我怀疑它们存在的原因。