【问题标题】:How toPerform a left join in linq pad -如何在 linq pad 中执行左连接 -
【发布时间】:2012-05-12 04:00:04
【问题描述】:

如何让 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:空值不能分配给 System.Int32 类型的成员,它是一个不可为空的值类型。

我怎样才能让 linqpad 工作以便我可以使用它?

【问题讨论】:

标签: linq-to-sql left-join linqpad


【解决方案1】:

在您的匿名类型中,确保您的整数返回整数。

改变

StyleHeaderId = c.Id,

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

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多