C# 获取项目索引(rownum)

C# 获取项目索引(rownum),c#,linq,oracle,nhibernate,linq-to-nhibernate,C#,Linq,Oracle,Nhibernate,Linq To Nhibernate,我有一张有10000个元素的桌子 IQuerable<IEntity> query = dataRep.Get<IEntity>() .Query(); 简单的sql可以很好地工作: select name, id, r from ( select name, id, rownum r from collections order by id ) where name = 'tes

我有一张有10000个元素的桌子

 IQuerable<IEntity> query = dataRep.Get<IEntity>()
                                   .Query();
简单的sql可以很好地工作:

 select name, id, r from 
 (
     select name, id, rownum r from collections order by id
 ) where name = 'testName';
如何在Linq到NHibernate进行此操作

编辑:

我尝试添加到
IEntity
类属性
RowNumber
,并将其映射到
hbm

  <property name="RowNumber" formula="rownum" />

始终获取
1
value

您不能直接筛选查询吗

IQuerable<IEntity> query = dataRep.Get<IEntity>()
                                  .Query()
                                  .FirstOrDefault(x => x.Name == "testName");
IQuerable查询=dataRep.Get()
.Query()
.FirstOrDefault(x=>x.Name==“testName”);
编辑:

要获取可以投影为匿名类型的项,请执行以下操作:

var query = (from data in dataRep.Get<IEntity>().Query()
             where Name == "testName"
             select new
             {
                 id = data.id,
                 rowNumber = data.rowNumber
             }).FirstOrDefault();
var query=(来自dataRep.Get().query()中的数据)
其中Name==“testName”
选择新的
{
id=data.id,
rowNumber=data.rowNumber
}).FirstOrDefault();

我需要获取该项的索引,而不是该项。@Kronos-已编辑以显示如何投影到匿名类型以获取SQL中所述的id/行号。
ienty
对象不包含属性
rowname
!data.rowNumber-将出现编译错误!您必须要么:将属性添加到类定义中,要么省略rowNumber字段。我完成了。但是这个属性应该是什么映射呢?我试过使用
。值总是
1
我假设Oracle
rownum
基于行在其结果集中的位置,因此,如果在只返回一个结果的查询的顶层调用它,则它只能等于
1
@Damien\u异信者。你是对的。如果block
where name='testName'
rownum
处于同一级别-结果总是
1
我必须删除一个标记,以便添加Oracle标记-我选择了.NET,但您可能有不同的意见;但这将归结为与NHbernate争论如何生成特定于Oracle的特定SQL,因此确实需要这两种技术之间的重叠才能获得一些专业知识。
IQuerable<IEntity> query = dataRep.Get<IEntity>()
                                  .Query()
                                  .FirstOrDefault(x => x.Name == "testName");
var query = (from data in dataRep.Get<IEntity>().Query()
             where Name == "testName"
             select new
             {
                 id = data.id,
                 rowNumber = data.rowNumber
             }).FirstOrDefault();