Soy muy nueva usando LINQ y he hecho pocas cosas, ahorita tengo una consulta SQL que debo implementar en LINQ y no tengo ni idea de cómo se hace.
SELECT Boletas.Boleta, DATEPART(DW, CAST(Boletas.Fecha AS datetime)) AS DiaDeLaSemana,
Materiales.Descripcion, Clientes.Nombre,
induscomer.NoCliente AS induscomerNoCliente
FROM Boletas
INNER JOIN Materiales
ON Boletas.Material = Materiales.Material AND Boletas.Familia = Materiales.Familia
INNER JOIN Clientes
ON Boletas.NoCliente = Clientes.NoCliente
LEFT OUTER JOIN induscomer
ON Clientes.NoCliente = induscomer.NoCliente
WHERE (Boletas.Fecha >= '20170101') AND (Boletas.Fecha <= '20170107')
AND (Boletas.Status = 'A')
ORDER BY Boletas.Material
De tal forma que si no existe el correspondiente cliente en la tabla induscomer, entonces induscomerNoCliente sería nulo.
Intenté siguiendo algunas ayudas que encontré hacerlo así:
var boletaQuery = (
from b in _context.Boletas
join m in _context.Materiales on b.Material equals m.Material
join c in _context.Clientes on b.NoCliente equals c.NoCliente
join i in _context.induscomer on c.NoCliente equals i.NoCliente into indus
from ind in indus.DefaultIfEmpty()
where b.Fecha.CompareTo(FechaIni) >= 0
&& b.Fecha.CompareTo(FechaFin) <= 0
&& b.Status.Equals('A')
select new {
b,
induscomerNoCliente = ind.NoCliente,
NombreCliente = c.Nombre,
DescripcionMaterial = m.Descripcion
}
);
Pero al hacer boletaQuery.ToList();
me marca el siguiente error:
Excepción no controlada del tipo 'System.NotSupportedException' en System.Data.Entity.dll Información adicional: No se pudo crear un valor de constante de tipo 'System.Object'. Solo se admiten tipos primitivos o tipos de enumeración en este contexto.