Oracle Linq查询的.Any和.Contains错误
我试图在LINQ中创建以下代码。我正在使用Linqpad测试我的代码,但不断出现错误: NotSupportedException:不支持使用表达式构造或初始化f_uAnonymousType0Oracle Linq查询的.Any和.Contains错误,linq,Linq,我试图在LINQ中创建以下代码。我正在使用Linqpad测试我的代码,但不断出现错误: NotSupportedException:不支持使用表达式构造或初始化f_uAnonymousType02[LINQPad.User.RNIS\u MAINTBOUNDARY\u V,System.Linq.IQueryable1[System.Int32]]类型的实例 我的代码如下: var roads = from d in RNIS_MAINTBOUNDARY_V let ts2 =
2[LINQPad.User.RNIS\u MAINTBOUNDARY\u V,System.Linq.IQueryable
1[System.Int32]]类型的实例
我的代码如下:
var roads =
from d in RNIS_MAINTBOUNDARY_V
let ts2 =
from dretab in RNIS_DRE_AREA_V
select dretab.DRE_CODE
where ts2.Contains(d.AUTH_ID)
select d;
roads.Dump();
作为参考,连接的两个字段,即auth_id和dre_code都是Oracle编号字段。为什么会出现这个错误 您的LINQ查询被转换为方法调用链
var roads = RNIS_MAINTBOUNDARY_V
.Select(d => new { d, ts2 = RNIS_DRE_AREA_V.Select(dretab => dretab.DRE_CODE) })
.Where(τ0 => τ0.ts2.Contains(τ0.d.AUTH_ID))
.Select(τ0 => τ0.d);
除此之外,它看起来像LINQ to Entities不喜欢{d,ts2=…}
匿名类型
尝试将内部查询移动到lambda中:
var roads = RNIS_MAINTBOUNDARY_V
.Where(d => RNIS_DRE_AREA_V.Select(dretab => dretab.DRE_CODE).Contains(d.AUTH_ID));
LINQ到实体可能也不喜欢这样,因此您可以尝试真正的连接:
var roads = RNIS_MAINTBOUNDARY_V
.GroupJoin(
RNIS_DRE_AREA_V,
d => d.AUTH_ID,
dretab => dretab.DRE_CODE
(d, dretabs) => new { d, count = dretabs.Count() })
.Where(p => p.count > 0)
.Select(p => p.d);