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
的=
运算符。您必须将一个转换/强制转换为另一个。