使用带有Linq IQueryable的自定义比较器
本文关键字:自定义 比较器 IQueryable Linq | 更新日期: 2023-09-27 18:00:05
我正在尝试对使用Linq生成的查询使用自定义比较器。我看过很多文章说你不能这样做,但当我查看Distinct扩展方法的签名时,我看到的是:(这个IQueryable源,IEqualityComparer comparer)。。
如果不能通过Linq将自定义比较器转换为sql,为什么会有一个构造函数接受它?
提前谢谢。
原因是linq不仅仅是对sql的linq,对实体或其他任何东西的linq。
当使用queryable时,您总是有一个提供程序。没有要求提供者支持linq所能做的一切。这就是一个这样的例子。
之所以存在它,是因为不同的提供程序可能会选择支持不同的功能集,例如自定义比较器。
一般来说,我相信可以通过LINQ对IEnumerable
进行的所有操作都可以对IQueryable
进行。
我同意,这可能是一件很难转化为您的提供商链接到的任何内容的事情,但Enumerable
和Queryable
之间的对称性,以及某人可能的事实,我怀疑它们存在的原因。