0

我有这段代码:

fee.SingleOrDefault(f => 100.05M >= f.Rate);

在数据库中,Fee.Rate 是使用不变文化存储的货币字段。但是使用此选择会出错,因为我当前的文化会将“100.05”转换为“100,05”,从而导致;

An expression of non-boolean type specified in a context where a condition is expected, near ','.

做这个的最好方式是什么?

4

2 回答 2

0

这让我觉得这不是 LINQ 问题,而更像是 SubSonic 问题。快速浏览一下他们的 LINQ 解析器,看起来常量值是用 ToString() 处理的,不考虑文化(参见 SubSonic.Linq.Structure.TSqlFormatter.VisitConstant)。为此编写/贡献补丁将是理想的(允许指定文化或至少默认使用不变量),否则我认为您在切换线程文化时遇到了困难。

于 2009-09-24T14:13:00.953 回答
0

谢谢你的回答。作为一种解决方案,我修改了 SqlServer.ttinclude 模板以在 Find 方法中切换到不变区域性。不是一个完美但临时的解决方案,我将创建一个补丁或至少将问题报告给 SubSonic。

于 2009-09-28T09:28:28.507 回答