我有这个查询,它在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 };
在上一次加入中, 我想与产品 进行正确的外部联接。我试图不使用动态SQL查询,并尝试使用linq本身。我不想使用,因为这会极大地影响性能。我之前尝试过linq to objects但是无法获得正确的性能,现在尝试linq到sql但仍然无法通过。 LINQ Query Help。非常感谢任何帮助。
答案 0 :(得分:1)
试试这个(检查productinfos(s)
的拼写错误):
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 :(得分:1)
请尝试以下
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 };
它应该适用于这种情况。我还没有测试过它