我有一个查询,它在Books、TradingDesks和ProductInfos上运行连接。
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。任何帮助都是非常感谢的。
发布于 2011-06-29 10:36:50
试试这个(检查productinfos(s)的错误):
编辑:对不起,我给了你左边的外接。右外部联接在Linq中不可用,因此您需要稍微重新格式化查询。
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
};发布于 2011-06-29 10:41:01
请试以下几点
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 };它应该在这种情况下起作用。不过,我还没有测试过
https://stackoverflow.com/questions/6519031
复制相似问题