【发布时间】:2017-01-24 13:04:01
【问题描述】:
假设我们有一个表 T,它有两列 A 和 B,分别是 float 和 money 类型。我想编写一个类似于以下 T-SQL 语句的 linq 查询:
Select A, B, A * B as C
From SomeTable
Where C < 1000
我试着像下面这样投射
var list = (from row in model.Table
where ((decimal)row.A) * row.B < 1000
select new { A = row.A,
B = row.B ,
C = ((decimal)row.A) * row.B}
).ToList();
但它不允许强制转换操作。它抛出一个异常:
Linq to Entity 查询不支持转换为小数,因为 无法推断所需的精度和比例信息。
我的问题是如何在 Linq 中将双精度转换为十进制?我不想从数据库中获取数据。
更新:
我注意到将小数转换为双倍有效,但反向操作会引发异常。所以,
为什么我们不能将双精度转换为十进制? Sql server 是否也在 t-sql 中执行相同的机制?不影响精度吗?
【问题讨论】:
-
It does not allow cast operation -
错误是否与此类似? stackoverflow.com/questions/41802366/…
-
Linq to Entity 查询不支持转换为小数,因为无法推断所需的精度和比例信息。
-
如果将小数转换为双精度进行计算,是否有效?
-
它不会在逆向转换中抛出异常。
标签: c# entity-framework linq