2

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 to NHibernate でこれを行うにはどうすればよいですか?

編集:

IEntityクラスプロパティに追加して、これを次のようにマッピングしようとしましRowNumberhbm

  <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 に答える