4

以下に示すように、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 pad が作成する sql は Management Studio で完全に実行されますが、linq-pad は行を表示せず、このエラーが発生します

InvalidOperationException: Null 非許容値型である System.Int32 型のメンバーに null 値を割り当てることはできません。

どうすればlinqpadを動作させて遊ぶことができますか?

4

1 に答える 1

3

匿名型で、int が int を返していることを確認してください。

変化する

StyleHeaderId = c.Id,

StyleHeaderId = (c.Id == null ? 0 : c.Id),
于 2012-05-03T17:23:08.617 に答える