林克在我的不止一个领域离开了?我的SQL正在工作,但可以';t将其转换为linq查询

林克在我的不止一个领域离开了?我的SQL正在工作,但可以';t将其转换为linq查询,linq,entity-framework,left-join,inner-join,Linq,Entity Framework,Left Join,Inner Join,我想知道是否有人能帮忙 我有一个简单的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.c

我想知道是否有人能帮忙

我有一个简单的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 }
很好,但我意识到我实际上需要一个左连接来代替内部连接。所以sql现在工作得很好!,is:-(注意左连接)

所以现在一切似乎都正常了,我使用SQL获取了所需的数据,我不知道如何在LINQ中进行左连接,尤其是如何在多个字段上进行左连接——在我的例子中是itemid和catid


我不知道是否有人能帮我一把,我被卡住了:-)

我想这就是你需要向下走的方向:

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"
   };
你应该看看:

关键是--> 加入联合管理部 来自JoinedDept.DefaultIfEmpty()中的部门

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"
   };