我有我的linq查询,我加入了3个表。将它们分组到另一个中,这样我就可以对表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'十进制?'" 我尝试使用convert.todecimal,但我得到了
LINQ to Entities无法识别方法' System.Decimal ToDecimal(System.String)'方法,这个方法无法翻译 进入商店表达。
sqlfunctions.stringconvert也没有帮助。有什么想法吗?
答案 0 :(得分:1)
我认为如果数据量相当小,可以使用从LINQ到实体到LINQ到对象的转换:
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)
.AsEnumerable().Select(p => new
{
ID = p.Key.pID,
Address = p.Key.pAddress,
SubTotal = p.Sum(s => s.sPrice)
});