【问题标题】:NHibernate: Can't Select after Skip Take In Certain ScenarioNHibernate:跳过某些场景后无法选择
【发布时间】:2026-01-21 05:10:01
【问题描述】:

由于某种原因,我无法在 Skip()/Take() 之后使用 Select(),除非我以某种方式执行此操作。以下代码有效,并允许我将结果用作子查询的一部分。

var query = QueryOver.Of<MyType>();
query.Skip(1);
var result = query.Select(myType => myType.Id);

但是,如果我尝试如下在一行上创建查询,我将无法编译。

var query = QueryOver.Of<MyType>().Skip(1);
var result = query.Select(myType => myType.Id);

看起来第一个中的代码导致查询的类型为 QueryOver,而第二个中的代码导致查询的类型为 QueryOver

这样写也可以。

var query = QueryOver.Of<MyType>().Select(myType => myType.Id).Skip(1);

任何想法为什么当第一个和第三个版本工作时第二个版本会严重失败?这似乎是一种奇怪的行为。

【问题讨论】:

    标签: select nhibernate skip take nhibernate-4


    【解决方案1】:

    您在第二个版本中有错字...

    var query = QueryOver.Of<MyType().Skip(1);
    

    缺少&gt;

    var query = QueryOver.Of<MyType>().Skip(1);
    

    不确定那是不是你要找的东西。

    【讨论】: