1

我想知道是否有人可以提供帮助

我有一个简单的 SQL 查询,就是这样。

SELECT * FROM ITEM INNER JOIN CODES ON ITEM.ITEMID = CODES.ITEMID AND
        ITEM.CATID = CODES.CATID

这很好用,所以我在 LINQ 中创建了以下查询

from i in Item join  c in codes
      on new { i.itemid, i.catid } equals new { c.itemid, c.catid }

效果很好,但他们我意识到我实际上需要一个 LEFT JOIN 来代替 INNER JOIN。所以现在运行良好的 sql 是 :- (注意左连接)

SELECT * FROM ITEM LEFT JOIN CODES ON ITEM.ITEMID = CODES.ITEMID AND
        ITEM.CATID = CODES.CATID

所以现在一切似乎都正常了,我用 SQL 取回了我需要的数据

我想知道是否有人可以伸出援助之手,我被卡住了:-)

4

2 回答 2

2

我认为这是你需要往下走的方向:

from i in Item 
   join c in codes on new { i.itemid, i.catid } equals new { c.itemid, c.catid } 
   into grouped
   from g in grouped.DefaultIfEmpty()
   select new
   {
      ItemId = c.itemid,
      CatItemId = g != null ? g.itemid : "Empty"
   };
于 2012-06-06T19:17:37.353 回答
0

你应该看看:http ://codingsense.wordpress.com/2009/03/08/left-join-right-join-using-linq/

关键是 --> 从 JoinedEmpDept.DefaultIfEmpty() 中的 dept 进入 JoinedEmpDept

于 2012-06-06T19:18:48.467 回答