C# 无法应用运算符'==';输入';系统,.Nullabe<;十进制>';和';系统可为空<;双倍>';错误

C# 无法应用运算符'==';输入';系统,.Nullabe<;十进制>';和';系统可为空<;双倍>';错误,c#,C#,我试图理解为什么下面的方法会抛出这个错误。如果有人能帮我或给我指出正确的方向,我将不胜感激 public List<Data> GetResults(string manufacturer, int? vehicle, double? engine ) { var results =c ontext.Data.Where(x => x.Name == manufacturer) .Where(x => x.

我试图理解为什么下面的方法会抛出这个错误。如果有人能帮我或给我指出正确的方向,我将不胜感激

 public List<Data> GetResults(string manufacturer, int? vehicle, double? engine )
        {
var results =c ontext.Data.Where(x => x.Name == manufacturer)
                        .Where(x => x.ModelId == model)
                        .Where(x => x.EngineLitreCapacity == engine) // <<  error occurs on this line!
                        .GroupBy(x => x.EngineLitreCapacity)
                        .Select(x => x.FirstOrDefault())
                        .ToList();

        }
public List GetResults(字符串制造商、内部车辆、双引擎)
{
var results=c ontext.Data.Where(x=>x.Name==制造商)
.Where(x=>x.ModelId==model)
.其中(x=>x.EngineEliteRecapacity==engine)//x.EngineEliteRecapacity)
.Select(x=>x.FirstOrDefault())
.ToList();
}
我做错了什么?我将如何着手解决上述问题?
谢谢

引擎的容量
似乎是一个
十进制数
,而您的
引擎
是一个
双精度?
。没有铸造,这些变量是不可比较的


简单的解决方案是将
引擎
设为
十进制?
。这可能会导致以后的铸造问题,您必须解决这些问题。直接使用
double?
绝对不是一个好主意,因为它的精度可能会导致方程失败。

首先告诉我,你对得到的错误有什么理解?这对您意味着什么?错误消息说明了您需要的一切,没有可以比较
Nullable
Nullable
=
运算符。您必须将一个转换/强制转换为另一个。