LINQ to SQL帮助

时间:2011-06-29 10:17:38

标签: c# linq linq-to-sql linq-to-objects

我有这个查询,它在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。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

试试这个(检查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 
                       };

答案 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 };

它应该适用于这种情况。我还没有测试过它