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 }

うまく機能しますが、実際にはINNERJOINの代わりにLEFTJOINが必要であることに気づきました。したがって、SQLは、現在はうまく機能しています!、:-(左結合に注意してください)

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

これですべてが機能しているように見え、SQLを使用して必要なデータを取得できます。LINQで左結合を実行する方法、特に複数のフィールドで左結合を実行する方法を理解できません。私の場合はitemidとcatidです。

誰かが手を貸すことができるのだろうか、私は立ち往生している:-)

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()の部門からJoinedEmpDeptに入る

于 2012-06-06T19:18:48.467 に答える