2

我有以下数据:

在此处输入图像描述

数字可以为 NULL

我正在编写一个 LINQ 语句以获得以下数字:

  • 100 与 110 是 110
  • 200 系数 90 是 180

需要的结果:290

我的 LINQ 语句目前看起来像这样:

(from b in data
where b.Number.HasValue
select new
{
    Number = b.Number.Value,
    b.Factor
}).Sum(o => o.Number * (o.Factor / 100));

我收到以下错误:

转换为值类型“十进制”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可为空的类型。

4

1 回答 1

5

这可以通过像这样转换 Sum 的内容来解决:

(from b in data
where b.Number.HasValue
select new
{
    Number = b.Number.Value,
    b.Factor
}).Sum(o => (decimal?)(o.Number * ((decimal)o.Factor / 100))) ?? 0;

(注意:我在写问题时找到了答案,并认为我不妨制定一个答案并将其发布给其他人查找)

于 2012-08-27T13:11:53.543 回答