IQueryable.OrderBy 无法在 EF Core 中使用 IComparer

IQueryable.OrderBy is not working with IComparer in EF Core

我们在 IQueryable 接口中有一个方法的签名:

public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, IComparer<TKey> comparer);

我正在尝试像这样实现此调用

var result = await DbSet.OrderBy(e => e.Type, new EntityTypeComparer()).ToListAsync();

但它抛出异常“无法翻译 LINQ 表达式”。

您能否与 EF Core 分享 IComparer 的任何工作示例?或者我如何在 EF Core 中为 int 属性 实现自定义排序逻辑?

P.S。 Microsoft docs says 不支持 IComparer。但是我们需要 IQueryable.OrderBy 和 IComparer 参数做什么?

这里已经对这个案例进行了解释Is it possible to use IComparable to compare entities in Entity Framework?

简短的回答是否定的,你不能那样做。

EF 要求所有操作都能够 100% 执行 server-side。支持 IComparable 或 IEquatable 需要 EF 能够将任意 IL 转换为 SQL,但它目前还不能做到。