Oracle Linq查询的.Any和.Contains错误

Oracle 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 =

我试图在LINQ中创建以下代码。我正在使用Linqpad测试我的代码,但不断出现错误:

NotSupportedException:不支持使用表达式构造或初始化f_uAnonymousType0
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);