【发布时间】:2024-05-18 06:50:02
【问题描述】:
如果我有 poco 类
public class Entry
{
public double Quantity { get; set; }
public decimal Cost{ get; set; }
}
如何在 Linq 查询中对它们进行算术运算
context.Entries.Sum(e => (decimal)e.Quantity * e.Cost);
我无法将“System.Double”类型的对象转换为“System.Decimal”类型
编辑:我已将小数转换为 double 并且它有效。
context.Entries.Sum(e => e.Quantity * (double)e.Cost);
【问题讨论】:
-
我没有看到这个异常调用
.Sum()在一个带有一些手动构造的Entry实例的数组上。你有异常的堆栈跟踪吗?您可以提供更多代码上下文吗? -
按运算符优先级
Quantity应转换为十进制并乘以Cost(注意:如果您的查询是 LINQ to Entities,请使用AsEnumerable)。您能提供异常详细信息和堆栈跟踪吗? -
只是一个想法(我知道它并没有真正提供答案):您可以通过将逻辑放在数据库中的存储过程中来解决该问题,该过程可以使用执行linq 到实体。
标签: c# entity-framework linq