【发布时间】:2009-08-17 10:07:37
【问题描述】:
我是LINQ 的新手,我正在尝试创建一些从表格到图表的数据点。该表中三个重要的字段是id、时间和值。我正在编写一个查询来获取所选 id 在设定时间内的平均值。我写的 LINQ 如下:
var value = (from t in _table
where t.Id == id
&& t.Time >= intervalStartTime
&& t.Time <= intervalEndTime
select t.Value).Average();
但是,这会在运行时崩溃:
"空值不能赋值给 System.Decimal 类型的成员 这是一个不可为空的值类型.."
在某些时间间隔没有数据,因此 SQL LINQ 生成返回 null,我希望将其 COALESCED 为 0,但会导致应用程序崩溃。有没有办法编写这个 LINQ 查询来正确处理这个问题?
表定义让事情更清楚:
[Serializable]
[Table(Name = "ExampleTable")]
public class ExampleTable
{
[Column(Name = "Id")]
public int Id { get; set; }
[Column(Name = "Time")]
public DateTime Time { get; set; }
[Column(Name = "Value")]
public int Value{ get; set; }
}
【问题讨论】: