2012-05-03 21 views
4

如何讓linq pad運行我的左連接,如下所示?如何在linq pad中執行左連接 -

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:空值不能被分配給一個 構件類型System.Int32是一個不可爲空的值類型。

我怎樣才能讓linqpad工作,讓我可以玩呢?

+0

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

回答

3

在您的匿名類型中,確保您的整數正在返回整數。

變化

StyleHeaderId = c.Id, 

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

這個工作!謝謝蝙蝠俠! – monkeyjumps

+0

@ user1373111你需要接受這個答案。 –