2

Ich habe eine Tabelle.So führen Sie SUM-Operation in Entity Framework aus

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

und ich möchte auf diese Summe opeartion auszuführen wie als

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

und ich folgenden Code versuche aber seine nicht funktioniert

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

einer mir helfen, dies zu tun Verwenden von Entity Framework. Ich benutze MVC 4 Razor.

+0

Was funktioniert nicht? –

+2

Hoppla, ich glaube ich habe es gesehen. Warum 'Price' ist eine Zeichenkette (' nvarchar (15) ')? –

+0

meine Abfrage von Entity Framework –

Antwort

0

Mai werden Sie Lambda-Ausdruck verwenden können

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

Kann nicht implizit in 'string' in 'dezimal' konvertiert werden, da meine Price-Spalte in der Datenbank in NVARCHAR steht, und ich var total = db.tblCartItems.Where (t => t.CartId == cartId) .Sum (i = > Convert.ToDecimal (i.Price)); –

+0

, aber LINQ to Entities erkennt die Methode 'System.Decimal ToDecimal (System.String)' nicht, und diese Methode kann nicht in einen Geschäftsausdruck übersetzt werden. –

+0

ist es in Ordnung, also welche Werte haben Sie in der Preisspalte? Sie können zuerst auswählen, wie var total = db.tblCartItems.Where (t => t.CartId == cartId) .Wählen Sie (p => CovertToDecial (p)). Sum (i => i); – hemantsharma

1

Endlich habe ich eine Lösung, dass aber es ist nicht genau von Entity Framework, aber seine Arbeits ...

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

seine Arbeits versuchen, diese ..

Dezimal.Parieren verwenden, um den Preis umzurechnen.

ObjTempCart.CartTotal = db.tblCartItems.Where(t=>t.CartId == cartId).Select(i=>Decimal.Parse(i.Price)).Sum(); 
Verwandte Themen