我有一个linq查询,在其中连接3个表,将它们分组到另一个表中,以便可以对第三个表中的值进行求和。
var roles = from p in db.Properties
join od in db.tblOrderDetails on p.pID equals od.odpID
join s in db.tblServices on od.odsID equals s.sID
where p.poID == 0 && p.pActive == true
group s by new {p.pID, p.pAddress} into g
select new
{
ID = g.Key.pID,
Address = g.Key.pAddress,
SubTotal = g.Sum(s => s.sPrice)
};
我的问题出现在SubtTotal上。我得到了"无法将类型'string'隐式转换为'decimal?'"的错误提示。我尝试使用convert.todecimal,但是我得到了以下错误信息:
LINQ to Entities不识别'System.Decimal ToDecimal(System.String)'方法,而且该方法不能翻译成储存表达式。sqlfunctions.stringconvert也无法解决这个问题。你有什么想法吗?
sPrice
的字符串类型变量,可能还有另一个名为*Price
的数字类型变量。在数据库中仅保存价格的字符串类型是很奇怪的。请注意,这里只是翻译,并没有做出任何解释或添加其他内容。 - xanatos