после долгой попытки / повторной попытки / попытки / повторной попытки вот что я хотел ....
from a in (from d in AllowanceDomains _
from t in AllowanceTypes _
where (new integer(){1,2}).contains(t.AllowanceTypeID) and t.active = true and d.active=true _
select t.allowancetypeid,tdescen =t.descen, d.allowancedomainid,ddescen=d.descen) _
group join qqq in AllowanceQties on new with {.k1 = a.allowancetypeid, .k2 = a.allowancedomainid, .k3 = 2} equals _
new with {.k1 = qqq.allowancetypeid, .k2 = qqq.allowancedomainid, .k3 = qqq.allowanceid} into qq = group _
from q in qq.DefaultIfEmpty _
join u in units on if(object.equals(q.unitid,nothing),1,q.unitid) equals u.unitid _
select AllowanceID =if(object.equals(q.AllowanceID,nothing),2,q.AllowanceID) ,a.tdescen,a.ddescen,qty = if(object.equals(q.qty,nothing),0,q.qty),u.descen