Convert query select CROSS APPLY to LINQ

1

I have a selection query SELECT that implements CROSS APPLY and I need to pass it to LINQ

Transact SQL Server

SELECT distinct(PC.ProductoCatalogoId),
P.Nombre + ' ' + PL.Product + ' ' + E.Nombre + ' ' + O.NombreOpcion AS   Descripcion,
    PC.PrecioVenta
FROM ProductoCatalogos AS PC
INNER JOIN Productos AS P ON PC.ProductoId = P.ProductoId
INNER JOIN EspecificacionCatalogos AS EC ON PC.ProductoCatalogoId = EC.ProductoCatalogoId 
INNER JOIN EspecificacionProductos AS EP ON EC.EspecificacionProductoId = EP.EspecificacionProductoId
INNER JOIN Especificaciones AS E ON EP.EspecificacionId = E.EspecificacionId
AND E.EspecificacionId = 2
INNER JOIN Opciones AS O ON EC.OpcionId = O.OpcionId
CROSS APPLY (
    SELECT E.Nombre + ' ' + O.NombreOpcion AS 'Product'
    FROM ProductoCatalogos AS PC
    INNER JOIN Productos AS P ON PC.ProductoId = P.ProductoId
    INNER JOIN EspecificacionCatalogos AS EC ON PC.ProductoCatalogoId = EC.ProductoCatalogoId
    INNER JOIN EspecificacionProductos AS EP ON EC.EspecificacionProductoId = EP.EspecificacionProductoId
    INNER JOIN Especificaciones AS E ON EP.EspecificacionId = E.EspecificacionId
        AND E.EspecificacionId = 5
    INNER JOIN Opciones AS O ON EC.OpcionId = O.OpcionId

    ) PL
    WHERE P.Nombre LIKE '%ferr%'

LINQ, I have the following query I have not been able to move forward because I do not know how to implement CROSS APPLY in LINQ

public IEnumerable<ProductoCatalogo> SearchProduct(int colorId, int tallaId)
    {
        using (var context = new BusinessContext())
        {
            var result = from pc in context.ProductoCatalogos
                join p in context.Productos on pc.ProductoId equals p.ProductoId
                join ec in context.EspecificacionCatalogos on pc.ProductoCatalogoId equals ec.ProductoCatalogoId
                join ep in context.EspecificacionProductos on ec.EspecificacionProductoId equals ep.EspecificacionProductoId
                join e in context.Especificaciones on ep.EspecificacionId equals e.EspecificacionId
                join o in context.Opciones on ec.OpcionId equals o.OpcionId
        }
    }

I hope you can help me.

Greetings!

    
asked by Pedro Ávila 09.10.2018 в 04:15
source

0 answers