C# 我可以在Linq to SQL中的.OrderBy()中使用IComparer吗?

C# 我可以在Linq to SQL中的.OrderBy()中使用IComparer吗?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,这个问题()讨论如何使用IComparer在Linq中实现自然排序。我过去在IEnumerables中成功地使用了它,但我无法使它在Linq到SQL表达式中工作。这是因为Linq to SQL不支持使用IComparer的.OrderBy()的特定重载吗 如果事实上是这样,有什么切实可行的解决办法吗 是的。LINQtoSQL将lambda表达式直接转换为SQL,因此它显然无法处理任意代码。您可以使用ToList()强制执行查询,然后在该列表上执行OrderBy。不是不支持IComparer,而是

这个问题()讨论如何使用IComparer在Linq中实现自然排序。我过去在IEnumerables中成功地使用了它,但我无法使它在Linq到SQL表达式中工作。这是因为Linq to SQL不支持使用IComparer的.OrderBy()的特定重载吗


如果事实上是这样,有什么切实可行的解决办法吗

是的。LINQtoSQL将lambda表达式直接转换为SQL,因此它显然无法处理任意代码。您可以使用
ToList()
强制执行查询,然后在该列表上执行
OrderBy

不是不支持IComparer,而是在Linq to Sql中,OrderBy()必须转换为T-Sql操作。如果它允许您指定比较标准,那么它背后的C#代码必须由SQL server执行才能使用


如果您需要在LINQtoSQL中执行一些不受支持但可以在T-Sql中执行的操作,那么您可以通过使用存储过程来解决这个问题,该存储过程在LINQtoSQL中工作得非常出色。如果不方便,可以调用ToList()方法来调用执行,然后在内存中对其进行排序。这种方法的实用性取决于数据的大小以及您希望获取的数据量(例如在实现分页时)。

谢谢,这是我非常有信心得到的答案。不过,一个男人总是有希望的。