2017-10-23 14 views
0

次の文はこの例外をスローします。ネストされたクエリはサポートされていません。 Operation1 =「ケース」Operation2 = 'ネストされたクエリはサポートされていません。 Operation1 = 'Case' Operation2 = 'Collect

_contexto.PESO_PIE.Where(w => w.LOTE_SACRIFICIO.LOTE.ID_ESTATUS_LOTE != _estatus_cerrado) 
        .GroupJoin(_contexto.PESO_CALIENTE, 
        PP => PP.ID_SACRIFICIO, 
        pc => pc.ID_SACRIFICIO, 
        (x, y) => new { PP = x, pc = y.DefaultIfEmpty() }) 
        .SelectMany(a => a.pc.Select(b => new { PP = a.PP, pc = b })) 
        .Select(s => new cPeso_Caliente() { 
         Sec_Sacrificio = s.PP.SEC_SACRIFICIO, 
         Cliente = s.pc != null ? s.pc.DESTINO_CLIENTE.DESTINO_CLIENTE1 : null, 
         Consec_Dia = s.pc != null ? s.pc.CONSEC_DIA : (int?)null, 
         Es_Maquila = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.PROVEEDOR.ES_MAQUILA, 
         Fecha_Registro = s.pc != null ? s.pc.FECHA_REGISTRO : (DateTime?)null, 
         Folio_Lote = s.PP.LOTE_SACRIFICIO.LOTE.ID_LOTE, // cambiar por folio lote despues de merge 
         Folio_Orden_Compra = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.ID_ORDEN_COMPRA, //cambiar por folio orden sacrificio despues de merge 
         IC = s.pc != null ? s.pc.IC : (byte?)null, 
         Id_Destino_Cliente = s.pc != null ? s.pc.ID_DESTINO_CLIENTE : (long?)null, 
         Id_Estado_Producto = s.pc != null ? s.pc.ETIQUETA.ID_ESTADO_PRODUCTO : null, 
         Id_Etiqueta = s.pc != null ? s.pc.ID_ETIQUETA : null, 
         Id_Proveedor = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.ID_PROVEEDOR, 
         Id_Sacrificio = s.PP.ID_SACRIFICIO, 
         Id_Usuario = s.pc != null ? s.pc.ID_USUARIO : null, 
         IFE = s.pc != null ? s.pc.IFE : (byte?)null, 
         IGC = s.pc != null ? s.pc.IGC : (byte?)null, 
         IGP = s.pc != null ? s.pc.IGP : (byte?)null, 
         MAD = s.pc != null ? s.pc.MAD : (byte?)null, 
         M_30 = s.pc != null ? s.pc.M_30 : (bool?)null, 
         Proveedor = s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.PROVEEDOR.NOMBRE_COMERCIAL, 
         R1 = s.pc != null ? s.pc.R1 : false, 
         Version = s.pc != null ? s.pc.VERSION : null, 
         GPE = s.pc != null ? s.pc.GPE : (byte?)null, 
         Tipo_Ganado = s.PP.LOTE_SACRIFICIO.TIPO_GANADO.TIPO_GANADO1, 
         Peso_Caliente = s.pc != null ? s.pc.ETIQUETA.PESO : (decimal?)null, 
         Peso_Pie= s.PP.PESO_PIE1, 
         Id_Producto=s.PP.LOTE_SACRIFICIO.ORDEN_COMPRA.DETALLE_OC.FirstOrDefault().ID_PRODUCTO, 
         Id_Lote_Sacrificio=s.PP.ID_LOTE, 
         Id_Tipo_Lote=s.PP.ID_TIPO_LOTE, 
         Log_Etiqueta_Anomalia= s.pc !=null && s.pc.ETIQUETA.ID_ESTADO_PRODUCTO!="N"? 
         s.pc.ETIQUETA.LOG_ETIQUETA_ANOMALIA.Select(sa=>new cLog_Etiqueta_Anomalia { 
          Id_Anomalia= sa.ID_ANOMALIA, 
          Id_Etiqueta= sa.ID_ETIQUETA, 
          Id_Log_Etiqueta= sa.ID_LOG_ETIQUETA, 
          Id_Resultado_Anomalia= sa.ID_RESULTADO_ANOMALIA, 
          Version= sa.VERSION 
         }): null 
         }).OrderBy(o=>o.Sec_Sacrificio).AsEnumerable() 

を収集し、私はこの問題は、私はこの例外に関連した質問を読みましたが、私は何かを見つける傾ける

Log_Etiqueta_Anomalia= s.pc !=null && s.pc.ETIQUETA.ID_ESTADO_PRODUCTO!="N"? 
         s.pc.ETIQUETA.LOG_ETIQUETA_ANOMALIA.Select(sa=>new cLog_Etiqueta_Anomalia { 
          Id_Anomalia= sa.ID_ANOMALIA, 
          Id_Etiqueta= sa.ID_ETIQUETA, 
          Id_Log_Etiqueta= sa.ID_LOG_ETIQUETA, 
          Id_Resultado_Anomalia= sa.ID_RESULTADO_ANOMALIA, 
          Version= sa.VERSION 
         }): null 

クエリの次の部分であることを知っていますlambdaでこの問題を解決することができます。

これを達成する方法はありますか、またはこのクエリをEF cantで処理できますか?

PESO_CALIENTEとSACRIFICIOが1持っていることを考慮してください:

答えて

0

サインネストされたクエリがサポートされていない1の関係を、私はあなたがEtiqueta_Anomaliaの値を取得するために別のメソッドを定義すべきだと思う:

Etiqueta_Anomalia = GetEtiqueta_Anomalia(s, sa); 

置換されたロジックを新しいメソッドに移動します。このようにして、クエリをより読みやすくします。

+0

私は同じ考えをしていましたが、それが実行可能かどうかを知りたいと思っていました。 –

関連する問題