c# - fromsql - raw query linq
Linq-Unión externa izquierda con notación de puntos (1)
¿Cómo haría una unión externa izquierda en linq usando la notación de puntos?
Aquí está la expresión de consulta:
var query = from u in db.Users
join d in db.Defects on u.userID equals d.userID into defectsGroup
from d in defectsGroup.DefaultIfEmpty()
select new { u, d };
Esto es lo que intenté:
var query2 = db.Users.GroupJoin(db.Defects.DefaultIfEmpty(),
u => u.userID,
d => d.userID,
(user, defect) => new { user, defect });
Pero el defecto se muestra como IEnumerable<Defect>
lugar de simplemente Defect
. También intenté:
var query2 = db.Users.GroupJoin(db.Defects,
u => u.userID,
d => d.userID,
(user, defect) => new { user, defect.DefaultIfEmpty() });
Que simplemente no compila. Todos los ejemplos en línea parecen usar la sintaxis de consulta (más clara).
Creo que quieres esto:
var query2 = db.Users.GroupJoin(db.Defects,
u => u.userId,
d => d.userID,
(u, defectsGroup) => new { u, defectsGroup})
.SelectMany(z => z.defectsGroup.DefaultIfEmpty(),
(z, d) => new { z.u, d });
Ver mi blog de Edulinq en expresiones de consulta para más detalles.