2012-05-03 9 views
4

linqパッドで左結合を以下のように実行するにはどうすればよいですか?linqパッドで左結合を行う方法 -

var query = 
      from s in db.CDBLogsHeaders 
        .OrderByDescending(g => g.LogDateTime) 
        from sc in db.StyleColors 
         .Where(stylecolor => stylecolor.id == (int?)s.StyleColorID) 
         .DefaultIfEmpty() 
        from c in db.StyleHeaders 
         .Where(styleHeader => styleHeader.id == (int?)s.StyleHeaderID) 
         .DefaultIfEmpty() 
     select new 
     { 
      CDBLogsHeaderId = s.Id, 
      Merchandiser = c.Merchandiser, 
      Material = s.Material, 
      Season = s.Season, 
      LogsHeaderLogType = s.LogType, 
      PushFromTo = s.PushFromTo, 
      LinePlan = s.LinePlan, 
      QuikRefNumber = s.QuikRefNumber, 
      PLMOrigin = s.PLM_Origin, 
      SeasonOriginal = c.SeasonOriginal, 
      SeasonCurrent = c.SeasonCurrent, 
      StyleHeaderId = c.Id, 
      StyleCode = c.StyleCode, 
      StyleColorsColorCode = sc.ColorCode 
     }; 

    query.Dump(); 

LINQパッドは任意の行を表示しませんManagement Studioのが、LINQ-パッドでの実行を完全に作成し、このエラーに

InvalidOperationExceptionがを与えるSQL:null値が メンバーに割り当てることはできませんSystem.Int32型はnull値のない型です。

linqpadを動作させるにはどうすればよいですか?

+0

変更

StyleHeaderId = c.Id, 

http://meta.stackexchange.com/a/128558/102937 –

答えて

3

匿名型では、intがintを返すようにしてください。

StyleHeaderId = (c.Id == null ? 0 : c.Id), 
+0

は、これが働いていました!ありがとうバットマン! – monkeyjumps

+0

@ user1373111これを答えとして受け入れる必要があります。 –

関連する問題