在linq查询中无法将类型字符串转换为十进制

时间:2015-03-20 15:11:53

标签: c# linq entity-framework linq-to-entities

我有我的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也没有帮助。有什么想法吗?

1 个答案:

答案 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)
                });