是否有概览显示或解释了必须调用 Linq 方法的顺序?
例如,如果您先调用Take(200)
然后OrderBy(..)
. 但是,当您切换这些呼叫时,您不会遇到异常。
所以我的问题是,有人知道一些解释这一点的文档吗?或者知道列出此类信息的地方?
是否有概览显示或解释了必须调用 Linq 方法的顺序?
例如,如果您先调用Take(200)
然后OrderBy(..)
. 但是,当您切换这些呼叫时,您不会遇到异常。
所以我的问题是,有人知道一些解释这一点的文档吗?或者知道列出此类信息的地方?
调用它们的顺序没有限制。在 LINQ中调用Take(200)
后跟是完全有效的。OrderBy
LINQ 无非就是一系列方法;它没有描述这些方法是如何实际实现的。一些实际的实现包括 Linq-to-objects(有点特殊)、LINQ-To-SQL、实体框架,然后是基于IQueryable
LINQ 方法的任意数量的其他查询提供程序。
某些特定的提供程序可能只支持 LINQ 方法的子集,或者可能不支持 LINQ 可以描述的某些其他方面。在这些情况下,他们可能会出错(或做一些其他不良行为)。您将需要查看您正在使用的任何特定 LINQ 提供程序的文档,以了解它支持和不支持的内容。
在调用 OrderBy 之前不能调用 Take(200) 的原因是 Take(200) 强制 NHibernate LINQ 提供程序评估 linq 查询。一旦查询被评估,它就不能在不重新评估查询的情况下添加更多的 SQL 子句,这可能会产生意想不到的后果。