Как сформировать левое соединение в 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: нулевое значение не может быть присвоено a члены типа System.Типа int32, который является необнуляемый тип значений.

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

1 4

1 ответ:

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

Изменение

StyleHeaderId = c.Id,

To

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