【发布时间】:2012-04-19 21:56:39
【问题描述】:
我有一个包含 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 类属性RowNumber 并将其映射到hbm 上
<property name="RowNumber" formula="rownum" />
但是之后
var index = query.Where( x => x.Name == "testName")
.Select( x => x.RowNumber)
.FirstOrDefault();
始终获取1 值
【问题讨论】:
-
我假设是 Oracle?
rownum基于行在其结果集中的位置,因此如果在只返回一个结果的查询的顶层调用它,它只能等于1。 -
@Damien_The_Unbeliever。你说的对。如果块
where name='testName'将与rownum处于同一级别 - 结果始终为1 -
我必须删除一个标签,以便添加 Oracle 的标签 - 我选择了 .NET,但您可能有不同的看法;但这将归结为与 NHbernate 争吵以生成特定于 Oracle 的特定 SQL,因此确实需要在这两种技术之间进行重叠以希望获得一些专业知识。
标签: c# linq oracle nhibernate linq-to-nhibernate