0

如何为 Linq to Entities OrderBy() 实现与自定义 IComparer 的等效项?

正如MSDN 文档所述,Linq to Entities 不支持自定义比较器:

LINQ to Entities 支持大多数 LINQ 排序方法,但接受 的方法除外IComparer,因为比较器无法转换为数据源。有关详细信息,请参阅LINQ to Entities 查询中的标准查询运算符

4

1 回答 1

1

如果你想使用自定义IComparer,你需要先问问自己是否可以在数据库中进行排序。如果不是,只需调用AsEnumerable序列,然后在服务器上对其进行排序。

如果您可以(并且想要)在数据库中对其进行排序,那么您需要考虑需要进行哪些转换才能进行排序。如果你有一个复杂的转换,你可以把它写成一个 SQL 函数,并将它添加到你的数据上下文中:

from e in context.Entities
let hours = context.Get32HourValue(e.Time)
orderby hours
select e
于 2012-05-18T14:30:15.820 回答