2012-05-03 23 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你需要接受这个答案。 –