Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 转换为值类型';双倍';由于物化值为null-平均值,因此失败_Sql_Asp.net Mvc_Linq - Fatal编程技术网

Sql 转换为值类型';双倍';由于物化值为null-平均值,因此失败

Sql 转换为值类型';双倍';由于物化值为null-平均值,因此失败,sql,asp.net-mvc,linq,Sql,Asp.net Mvc,Linq,我有一个查询,获取所有收集值的平均值。 这张桌子是学生的平均成绩 Model.UserClassAverage = ( from a in Db.averages join s in Db.subjects on a.subjectId equals s.id join c in Db.classes on s.classId equals c.id where (c.

我有一个查询,获取所有收集值的平均值。 这张桌子是学生的平均成绩

Model.UserClassAverage = (
                from a in Db.averages
                join s in Db.subjects on a.subjectId equals s.id
                join c in Db.classes on s.classId equals c.id
                where (c.id == userClassId)
                || (c.classTeacherId == userID)
                select a.value 
                ).Average();
问题是,每当我创建一个没有类的用户时,我都会得到一个错误消息

转换为值类型“double”失败,因为具体化的值为null

我在堆栈溢出中寻找答案,大多数答案都适用于
SUM
,而不是
AVERAGE

我试图添加
??0
操作数到平均值()的末尾。。但它导致了一个错误,即不能应用于整数和双精度


有什么合适的方法可以做到这一点吗?

基本上,
平均值
的规则与
总和
的规则完全相同

我的首选方法是将不可为null的类型提升为可为null(以便针对可为null的类型命中相应的方法重载),并使用C#null合并运算符将结果转换回不可为null的类型:

...
select (double?)a.value 
).Average() ?? 0;

基本上,
平均值
的规则与
总和
的规则完全相同

我的首选方法是将不可为null的类型提升为可为null(以便针对可为null的类型命中相应的方法重载),并使用C#null合并运算符将结果转换回不可为null的类型:

...
select (double?)a.value 
).Average() ?? 0;

是的,成功了!谢谢:戴普,成功了!谢谢:D