C# 获取项目索引(rownum)
我有一张有10000个元素的桌子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
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
我假设Oraclerownum
基于行在其结果集中的位置,因此,如果在只返回一个结果的查询的顶层调用它,则它只能等于1
@Damien\u异信者。你是对的。如果blockwhere 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();