Ich versuche, eine linke äußere auszuführen kommen auf zwei Tabellen basierend auf dem Modell auf dem Bild Linq LEFT OUTER JOIN nicht welche Ergebnisse
ich die folgende Linq-Abfrage bin mit:
var query = from u in Context.Set<CpcUnidadProceso>()
join p in Context.Set<CpcParadasPrevistasUnidad>()
on u.IdCpcUnidadesProceso equals p.IdCpcUnidadesProceso
into g
from result in g.DefaultIfEmpty()
where u.RefineriaArea.IdTipoArea == filters.IdTipoArea &&
(result.FechaParada >= filters.Fecha || result == null) && (result.FechaArranque <= filters.Fecha || result == null)
select
new CpcPrevisionParadasUnidadesDto
{
IdCpcUnidadesProceso = u.IdCpcUnidadesProceso,
CodigoUnidadProceso = u.CodUnidadProceso,
DescripcionUnidadProceso = u.Nombre,
IdCpcPrevisionParadasUnidadesDto = result == null ? 0 : result.IdCpcParadasPrevistasUnidades,
FechaParada = result == null ? null : result.FechaParada,
FechaArranque = result == null ? null : result.FechaArranque,
Observaciones = result == null ? null : result.Observaciones
};
Aber die Ergebnisse sind nicht wie erwartet, es gibt keine Ergebnisse zurück, wenn ein Datensatz mit FechaParada und/oder FechaArranque nicht null ist. Was mache ich hier falsch?
Sie sparen meinen Tag. Mit dem ersten Teil Ihrer Antwort funktioniert es wie ein Zauber. Danke – Oscar
@IvanStoev Aber im zweiten Teil der Antwort wo überprüfen Sie, ob das Ergebnis == null? – nam
@nam Da der gesamte Filter vor dem Join angewendet wurde, muss in der Where-Klausel nicht nach result == null gesucht werden. Grundsätzlich (rechts == null || some_condition (rechts)) wird nur benötigt, wenn Sie 'wo' nach dem Join verwenden. –