获取项目索引(rownum)

时间:2012-04-19 10:24:17

标签: c# linq oracle nhibernate linq-to-nhibernate

我有10 000个元素的表。

 IQuerable<IEntity> query = dataRep.Get<IEntity>()
                                   .Query();

我需要获取所选obj的索引(rownum)而不获取所有表项

 var obj = query.Where( x => x.Name == "testName")
                .FirstOrDefault();

简单的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" />

之后
  var index = query.Where( x => x.Name == "testName")
                   .Select( x => x.RowNumber)
                   .FirstOrDefault();

始终获取1

1 个答案:

答案 0 :(得分:1)

你能直接过滤查询吗?

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();