2

我有 10 000 个元素的表。

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

我需要在obj不获取所有表项的情况下获取 selected 的索引(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 to NHibernate 中做到这一点?

编辑:

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

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

但是之后

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

始终获得1价值

4

1 回答 1

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();
于 2012-04-19T10:27:44.330 回答