相关疑难解决方法(0)

转换为值类型"Int32"失败,因为实现值为null

我有以下代码.我收到错误:

"转换为值类型'Int32'失败,因为具体化值为null.结果类型的泛型参数或查询必须使用可空类型."

当CreditHistory表没有记录时.

var creditsSum = (from u in context.User
                  join ch in context.CreditHistory on u.ID equals ch.UserID                                        
                  where u.ID == userID
                  select ch.Amount).Sum();
Run Code Online (Sandbox Code Playgroud)

如何修改查询以接受空值?

.net c# linq-to-entities entity-framework

190
推荐指数
5
解决办法
12万
查看次数

转换为值类型"Double"失败,因为实现值为null

码:

double cafeSales = db.InvoiceLines
    .Where(x =>
        x.UserId == user.UserId &&
        x.DateCharged >= dateStart &&
        x.DateCharged <= dateEnd)
    .Sum(x => x.Quantity * x.Price);
Run Code Online (Sandbox Code Playgroud)

错误:

转换为值类型"Double"失败,因为实现值为null.结果类型的泛型参数或查询必须使用可空类型.

我已经看到了什么:

转换为值类型"Int32"失败,因为实现值为null

转换为值类型'Decimal'失败,因为具体化值为null

我做了什么:

double cafeSales = db.InvoiceLines
    .Where(x =>
        x.UserId == user.UserId &&
        x.DateCharged >= dateStart &&
        x.DateCharged <= dateEnd)
    .DefaultIfEmpty()
    .Sum(x => x.Quantity * x.Price);
Run Code Online (Sandbox Code Playgroud)

和:

double? cafeSales = db.InvoiceLines
    .Where(x =>
        x.UserId == user.UserId &&
        x.DateCharged >= dateStart &&
        x.DateCharged <= dateEnd)
    .Sum(x => x.Quantity * x.Price);
Run Code Online (Sandbox Code Playgroud)

这些都不奏效.我知道问题的原因是该表中没有我传入的UserId中的行.在这种情况下,我更喜欢Sum()只返回0给我.有任何想法吗?

c# entity-framework

25
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×2

entity-framework ×2

.net ×1

linq-to-entities ×1