IQueryable.OrderBy无法与EF Core中的IComparer一起工作



我们在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属性的自定义排序逻辑

附言:微软文档表示不支持IComparer。但是,我们需要具有IComparer参数的IQueryable.OrderBy用于什么?

这里已经对此案例进行了解释。是否可以使用IComparable来比较实体框架中的实体?

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

EF要求所有操作都能100%在服务器端执行。支持IComparable或IEquatable需要EF能够将任意IL转换为SQL,而这还不能做到

最新更新