【发布时间】:2011-10-19 22:09:16
【问题描述】:
我有一个带有金额字段的数据库 - 它是一个小数,尽管数据库架构将列定义为字符串。我希望能够运行 Linq 查询以根据金额的数字查找值。
像this 和this 这样的问题讨论了使用CompareTo 方法,但在这种情况下不起作用。例如,我在数据库中有以下账单金额:
556
130
1450
410
以下代码:
from t in test
where t.BillAmount.CompareTo("50") > 0
select t
将返回值556,但不会返回任何其他值,即使它们都高于十进制值 50。
将 where 行改为:
where t.BillAmount.CompareTo("50") < 0
将返回 130、1450 和 1450,因为它们“小于”然后 50 作为字符串,而不是作为数字。
我没有使用实体框架,所以我不能这样做:
where SqlFunctions.StringConvert((double)t.BillAmount).Trim() > 50
我也无法控制数据库架构,因此无法更改这些值。如何将 BillAmount 字段与数字进行比较并返回其上方/下方的值?
【问题讨论】:
-
也许 Convert.ToDecimal() 会有所帮助? Select(s => Convert.ToDecimal(s))
-
你说你不使用EF,那么测试的类型是什么?数据表?