私はむしろそれを次のように単純化したいと思います
(from at in address_types
join a in address
on at.addresstype equals a.addresstype into tt
from ar in tt.DefaultIfEmpty()
where (ar != null && ar.addressid == 24)
select new
{
at.Description,
ar.Address1,
ar.Address2,
ar.City
})
このチェック「(ja == null)」が必要ない理由は、この行のセットを「where(ar!= null && ar.addressid == 24)」にすでに制限しているためです。
このクエリは機能しますが、私のPOVは、SQLクエリではLEFTJOINも冗長であるということです。条件「a.addressid=24」のためにNULL行を取得しないため、SQLをINNERJOINおよびLINQクエリに書き換えることもできます。
(from at in address_types
join a in address
on at.addresstype equals a.addresstype
where at.addressid == 24
select new
{
at.Description,
a.Address1,
a.Address2,
a.City
})