Как выполнить левое соединение в 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();

Sql, который создает linq pad, отлично работает в Management Studio, но linq-pad не отображает никаких строк и выдает эту ошибку

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

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

1 ответ

Решение

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

+ Изменить

StyleHeaderId = c.Id,

к

StyleHeaderId = (c.Id == null ? 0 : c.Id),
Другие вопросы по тегам