Linq表达十进制文化

时间:2009-09-24 09:01:49

标签: linq subsonic3 expression culture

我有这段代码:

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 ','.

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

这让我感觉不那么LINQ问题和更多SubSonic问题。快速浏览一下它们的LINQ解析器,看起来常量值是用ToString()处理的,不考虑文化(参见SubSonic.Linq.Structure.TSqlFormatter.VisitConstant)。为此编写/提供补丁是理想的(要么允许指定文化,要么至少默认使用不变量),否则我认为你很难切换线程文化。

答案 1 :(得分:0)

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