2010-09-14 77 views

回答

1

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

如果您需要在Linq-To-Sql中执行某些不受支持但可以在T-SQL中完成的操作,则可以使用存储过程来解决该问题,该存储过程可与Linq-to- SQL语句。如果不方便,可以调用ToList()方法来调用执行,然后在内存中对其进行排序。这种实用性取决于数据的大小以及您希望获取的数据量(例如在执行分页时)。

1

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

+0

谢谢,这是我非常有信心的答案。不过,一个人总是希望。 – 2010-09-14 22:31:11