使用带有Linq IQueryable的自定义比较器

本文关键字:自定义 比较器 IQueryable Linq | 更新日期: 2023-09-27 18:00:05

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

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

提前谢谢。

使用带有Linq IQueryable的自定义比较器

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

当使用queryable时,您总是有一个提供程序。没有要求提供者支持linq所能做的一切。这就是一个这样的例子。

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

一般来说,我相信可以通过LINQ对IEnumerable进行的所有操作都可以对IQueryable进行。

我同意,这可能是一件很难转化为您的提供商链接到的任何内容的事情,但EnumerableQueryable之间的对称性,以及某人可能的事实,我怀疑它们存在的原因。