首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ到SQL帮助

问LINQ到SQL帮助
EN

Stack Overflow用户
提问于 2011-06-29 10:17:38
回答 2查看 123关注 0票数 0

我有一个查询,它在Books、TradingDesks和ProductInfos上运行连接。

代码语言:javascript
复制
var queryjoin = from b in books.values
                join d in tradingdesks
                    on b.tradingdeskid equals d.id
                **join p in productinfoss**
                    on b.id equals p.riskbookid
                select new { p, book = b.name, tradingdeskname = d.name };

在最后一个联接中,我想要与Products做一个正确的外部连接。我试图不使用动态sql查询,并试图使用linq本身来完成这项工作。我不想使用where,因为这对性能有很大影响。我之前尝试过linq对对象,但不能获得正确的性能,现在尝试linq对sql,但仍然无法完成这一点。LINQ Query Help。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-29 10:36:50

试试这个(检查productinfos(s)的错误):

编辑:对不起,我给了你左边的外接。右外部联接在Linq中不可用,因此您需要稍微重新格式化查询。

代码语言:javascript
复制
var queryjoin = from p in productinfos
                join b in books.values
                    on p.riskbookid equals b.id into outer
                from o in outer.DefaultIfEmpty()
                join d in tradingdesks
                    on o.tradingdeskid equals d.id
                select new { 
                       p,
                       book = (o==null) ? "(no book name)" : o.name,
                       tradingdeskname = d.name 
                       };
票数 1
EN

Stack Overflow用户

发布于 2011-06-29 10:41:01

请试以下几点

代码语言:javascript
复制
var queryjoin = from p in productinfoss
                join b in books.values on p.riskbookid equals b.id into temp
                from t in temp.DefaultIFEmpty()
                join d in tradingdesks on 
                t.tradingdeskid equals d.id
                new { p, book = t==null?"no name":t.name, tradingdeskname = d.name };

它应该在这种情况下起作用。不过,我还没有测试过

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6519031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档