2012-05-03 1 views
4

Как я могу получить панель linq для запуска моего левого соединения, как показано ниже?Как сделать левое соединение в 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(); 

SQL, что LINQ подушечка создает отлично работает в среде Management Studio, но Linq-панель не отображает строки и выдает эту ошибку

InvalidOperationException: Нулевое значение не может быть назначен на члена с типом System.Int32, который является типом непустого значения.

Как я могу заставить linqpad работать, чтобы я мог играть с ним?

+0

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

ответ

3

В вашем анонимном типе убедитесь, что ваши ints возвращают ints.

Изменить

StyleHeaderId = c.Id, 

Для

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

Это работает !! Спасибо, Бэтмен! – monkeyjumps

+0

@ user1373111 вам нужно принять это как ответ. –