左外连接

时间:2011-06-08 07:22:16

标签: c# linq-to-sql outer-join

List<ServicePacksDTO> allServicePacks = new List<ServicePacksDTO>();
        using (var db = new DataContext())
        {
            allServicePacks=(
                    from sp in db.ServicePacks
                    join st in db.States.DefaultIfEmpty() on sp.State_id equals st.State_Id
                    join type in db.ServiceTypes on sp.ServiceType_Id equals type.ServiceType_Id
                    where
                     (type.ServiceType_desc.ToLower() == "accepted") 
                    orderby sp.AustState_id
                    select sp.ToServicePacksDTO(db)).ToList();
        }

当前代码工作正常,直到我尝试在状态上进行外连接。是否可以轻松地做到这一点?

1 个答案:

答案 0 :(得分:0)

首先,你需要提供更多细节“工作正常,直到我尝试做xx”。

什么不起作用?有错误吗?出乎意料的结果?

忘记DTO投影和db.ServiceTypes加入,在db.ServicePacksdb.States之间执行LOJ,请执行以下操作:

var x = (from sp in db.ServicePacks
join st in db.States on sp.State_id equals st.State_id into spst
from x in spst.DefaultIfEmpty()
select new { /* fields */ }
).ToList();

首先尝试,确保它有效(应该),然后添加其他连接和投影。