左外连接

发布于 2024-11-14 16:33:15 字数 686 浏览 1 评论 0原文

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();
        }

当前的代码工作正常,直到我尝试对状态进行外连接。有什么方法可以轻松做到这一点吗?

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();
        }

The current code works fine, until I attempt to do an outer join on state. Is there away to do this easily?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼眸里的那抹悲凉 2024-11-21 16:33:15

首先,您需要提供更多“工作正常,直到我尝试执行 xx”的详细信息。

什么不起作用?有错误吗?意想不到的结果?

忘记 DTO 投影和 db.ServiceTypes 加入,要在 db.ServicePacks 和 db.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();

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

Well firstly, you need to provide a bit more detail that "works fine, until i attempt to do xx".

What doesn't work? Is there an error? Unexpected results?

Forgetting about the DTO projection and db.ServiceTypes join, to do a LOJ between db.ServicePacks and db.States, do this:

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();

Try that first, make sure that works (it should), and then add on your other join and projection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文