신경 쓰지 마세요. 대신 join/into 구문으로 해결했습니다. 아마도 결국 필요합니다.EF에서 외부 조인을 사용할 수 없습니다.
EntitiyFramework와 작동하도록 Linq 외부 조인을 얻으려고합니다.
public List<OSCDagbokDTO> FillDataForOSCDagbokSO(List<OSCDagbokDTO> oscdagboklista)
{
var kalla_idn = oscdagboklista.Select(k => k.Kalla_id.GetGuidOrNull()).Distinct().ToList();
var kallaLista = (from k in _gemensamEntityContext.Kalla
where kalla_idn.Contains(k.Kalla_id)
select new KallaDTO()
{
Kalla_id = k.Kalla_id,
KallaText = k.KallaText
}).ToList();
var nyOSCDagbokLista = (from o in oscdagboklista
from k in kallaLista.DefaultIfEmpty()
where o.Kalla_id.GetGuidOrNull() == k.Kalla_id
select new OSCDagbokDTO()
{
Id = o.id,
Datum = o.Datum,
Enhet_id = o.Enhet_id,
Handelse = o.Handelse,
Kalla = k,
Kalla_id = o.Kalla_id,
}).ToList();
return nyOSCDagbokLista;
}
첫 번째 문장은 들어오는 목록의 특정 빈에서 ID 목록을 가져옵니다.
둘째, 해당 목록에서 DTO 개체를 만듭니다.
셋째, 들어오는 목록에서 모든 항목을 가져 오기 위해 외부 조인을 사용하여 DTO 목록 (kallaLista)에 가입합니다. DefaultIfEmpty()를 사용하고 있는데, 들어오는 목록의 항목을 필터링하지 않을 것이라고 생각했습니다.
여러 사이트에서 이해 했으므로 "조인"구문을 사용하지 않습니다. 위의 구문이 좋을 것입니다. 이전 구식이지만 더 좋아합니다.
무엇이 누락 되었습니까? DefaultIfEmpty()를 사용할 때 들어오는 목록의 항목이 DTO 목록에 없을 때 필터링되는 이유는 무엇입니까?
나는 그것이 "o"를 사용하지 않고 놓친 것이라고 생각합니다. 하지만 다른 목록 대신! – kaze