2

私はテーブルを持っています。Entity FrameworkでSUM操作を実行する方法

create table tblCartItem(
pkCartItemId int primary key identity, 
CartId int not null, 
ProductId int not null, 
Quantity int not null, 
Price nvarchar(15) 
) 

と私は

Select SUM(Price) from tblCartItem where CartId='107' 

としてのようにその上和opeartionを実行すると、私は次のコードにしようとしていますが、そのが、どれも私がこれを行うのに役立ち

ObjTempCart.CartTotal = (from c in db.tblCartItems where c.CartId == cartId select c.Price).Sum(); 

を動作していませんEntity Frameworkを使用します。 MVC 4 Razorを使用しています。

+0

何が問題なのですか? –

+2

おっと、私はそれを見たと思う。なぜ 'Price'は文字列(' nvarchar(15) ')ですか? –

+0

エンティティフレームワーク –

答えて

0

あなたは最後に、私はそれの解決策を持っていますが、そのない正確にEntity Frameworkのから、しかし、その作業ラムダ式

var total=db.tblCartItems.Where(t=>t.CartId == cartId).Sum(i=>i.Price); 
+0

データベースのPriceカラムがNVARCHARにあるため、暗黙的に 'string'から 'decimal'に変換できません。var total = db.tblCartItems.Where(t => t.CartId == CartID).Sum(i = > Convert.ToDecimal(i.Price)); –

+0

しかし、LINQ to Entitiesは 'System.Decimal ToDecimal(System.String)'メソッドを認識せず、このメソッドをストア式に変換することはできません。 –

+0

その罰金なので、値の列にはどのような値がありますか? (t => t.CartId == CartID).Select(p => CovertToDecial(p))。Sum(i => i);これは、前に選択したものをvar total = db.tblCartItems.Where – hemantsharma

1

を使用することができるかもしれませ...

private double CartItemTotalPrice(Int32 CartID) 
     { 
      List<string> pricelst = new List<string>(); 
      pricelst = (from c in db.tblCartItems where c.CartId == CartID select c.Price).ToList(); 

      double Total = 0; 

      if (pricelst != null) 
      { 
       for (int i = 0; i < pricelst.Count; i++) 
       { 
        Total += Convert.ToDouble(pricelst[i]); 
       } 
      } 

      return Total; 
     } 
0

その作業はこれを試します..

10進数.Parse価格を変換する。

ObjTempCart.CartTotal = db.tblCartItems.Where(t=>t.CartId == cartId).Select(i=>Decimal.Parse(i.Price)).Sum(); 
関連する問題