C# ORA-00904从linq生成的查询上的标识符无效

C# ORA-00904从linq生成的查询上的标识符无效,c#,oracle,linq,C#,Oracle,Linq,我有这个linq:- var query = from r in Ctx.Reg select new { IdReg = r.Id, ... Status1 = r.Hist.OrderByDescending(o => o.Id).Take(1).Any(x=> x.Status == 2), Status

我有这个linq:-

var query = from r in Ctx.Reg
            select new
            {
                IdReg = r.Id,
                ...
                Status1 = r.Hist.OrderByDescending(o => o.Id).Take(1).Any(x=> x.Status == 2),
                Status2 = r.Hist.OrderByDescending(o => o.Id).Skip(1).Take(1).Any(x=> x.Status == 5)
            };
生成的查询包含:

WHERE ("Extent1"."REP_ID" = "Extent2"."REP_ID")
我明白了

ORA-00904:“扩展1”,“代表ID”

这两列都存在并且具有相同的数据类型。
我能为这个问题做些什么?

我不知道确切的原因,但它是有效的:

var query = from r in Ctx.Reg
            select new
            {
                IdReg = r.Id,
                ...
                Status1 = Ctx.RegHist.OrderByDescending(o => o.Id).Any(x=> x.RegId == r.Id && x.Status == 2),
                Status2 = Ctx.RegHist.OrderByDescending(o => o.Id).Skip(1).Any(x=> x.RegId == r.Id && x.Status == 5)
            };

我不知道确切的原因,但它是有效的:

var query = from r in Ctx.Reg
            select new
            {
                IdReg = r.Id,
                ...
                Status1 = Ctx.RegHist.OrderByDescending(o => o.Id).Any(x=> x.RegId == r.Id && x.Status == 2),
                Status2 = Ctx.RegHist.OrderByDescending(o => o.Id).Skip(1).Any(x=> x.RegId == r.Id && x.Status == 5)
            };

如果没有“全部oracle”查询,则不清楚(即使它很大)。顺便问一下,你为什么不使用
r.Hist.Any()
r.Hist.Count()>1
来代替状态1和状态2的take/skip/Any?我有一个我忘记在Any()语句中写的子句,比如:Any(x=>x.Status==2)@Lennonfereira也许您可以在查询中返回
Hist
项,然后在Linq中对对象执行该逻辑。我不能这样做,因为查询结果返回分页网格的数据,并且我从Hist获得的这两个状态可能会影响该数据,我需要在执行之前执行所有逻辑如果没有all oracle查询,则无法清除(即使它很大)。顺便问一下,为什么不使用
r.Hist.Any()
r.Hist.Count()>1
来代替status1和status2的take/skip/Any呢?我忘了在Any()语句中写一个子句,比如:Any(x=>x.Status==2);@lennonfereira也许你可以返回查询中的
Hist
项,然后在Linq中对对象执行该逻辑。我不能这样做,因为查询结果返回分页网格的数据,我从Hist获得的这两个状态可能会影响该数据,我需要在执行之前执行所有逻辑