我有以下LINQ语句:
Items = Items.Where(p => p.LeadDatas.Any(
q =>
q.LeadField.Name == descriptor.Name &&
Convert.ToDouble(q.Value) == Convert.ToDouble(value)));
Run Code Online (Sandbox Code Playgroud)
它q.Value是double的String值,也是double value的String值,这两个值都需要转换为double,以便可以比较它们的相等性.
当我调试这个LINQ语句时,我得到以下SQLException:
错误将数据类型varchar转换为float
我不知道为什么它不允许我这样做,但我想知道修复是什么,我需要我的两个值来比较这里的平等.
首先,我将提取Convert.ToDouble(value)出一个局部变量:
double target = Convert.ToDouble(value);
Items = Items.Where(p => p.LeadDatas.Any(q =>
q.LeadField.Name == descriptor.Name &&
Convert.ToDouble(q.Value) == target));
Run Code Online (Sandbox Code Playgroud)
很有可能是尝试转换value问题,而不是尝试转换q.Value某些行.或者,可能是您有一行没有有效值.(你可以尝试使用,double.TryParse但我不确定这是多么好的工作......)
但是,首先将二进制浮点值与简单相等进行比较通常也是一个坏主意.您可能希望使用某种程度的容差(并且确切地说,如何使用LINQ to SQL是另一回事......)
| 归档时间: |
|
| 查看次数: |
6436 次 |
| 最近记录: |