2016-04-04 9 views
0

Ich versuche, die Gesamt Menge Gewicht in einer bestimmten Spalte zu zählen.Wie die Gesamtzahl der spezifischen Spalte in einer Tabelle zu zählen

Ich habe die folgende Codierung versucht, aber ich nur den ersten Wert der Zeile und nicht den Rest zu bekommen.

int QuoteId = (from x in db.Quotes where x.Id != null orderby x.Id descending select x.Id).Take(1).SingleOrDefault(); 
var item = db.QuoteItems.Where(x => x.QuoteId == QuoteId).First(); 
QuoteItemSectionGroup quoteItemList = new QuoteItemSectionGroup(); 
foreach (var quoteItem in db.QuoteItemSectionGroups.Where(x => x.QuoteItemId == item.Id).ToList()) 
{ 
    var total = new QuoteItemSectionGroup 
    { 
     Weight = quoteItem.Weight 
    }; 
    quoteItemList.Weight = total.Weight; 
} 

Also meine Frage ist: Wie kann ich die Gesamtmenge der Gewicht Spalte in meinem Tisch zählen?

Antwort

3

Sie möchten natürlich die aktuelle Nummer zu der Weigth hinzufügen, die Sie bereits erhalten haben, nicht wahr? Außerdem müssen Sie keine neue Instanz von QuoteItemSectionGroup erstellen, nur um die Weight -Eigenschaft vorübergehend zu setzen.

foreach (var quoteItem in db.QuoteItemSectionGroups.Where(x => x.QuoteItemId == item.Id).ToList()) 
{ 
    quoteItemList.Weight += quoteItem.Weight; // pay attention on the + before the equality-character 
} 

Der += Operator in x += 1 ist einfach eine Abkürzung für x = x + 1.

Oder noch einfacher mit Linq Sum -Methode

var totalWeight = db.QuoteItemSectionGroups 
    .Where(x => x.QuoteItemId == item.Id) 
    .Sum(x => x.Weight); 

EDIT: Außerdem können Sie Ihren Code ein wenig vereinfachen, so dass es schließlich wird daraus:

var item = db.Quotes.Where(x => x.Id != null) 
    .OrderByDescending(x => x.Id) 
    .FirstOrDefault(); 
var totalWeight = db.QuoteItemSectionGroups 
    .Where(x => x.QuoteItemId == item.Id) 
    .Sum(x => x.Weight); 
+0

Danke für die Antwort Mann. Ich bin nicht mit den meisten der C# Theorie vertraut, aber können Sie mir eine grundlegende Erklärung geben, wie das '+' vor dem '=' funktioniert? – CareTaker22

+0

Brilliant! Der zweite ist großartig. – CareTaker22

+1

@ CareTaker22 die Syntax + = ist keine Theorie von C#, aber es funktioniert in den meisten Sprachen. Es ist eine Abkürzung für 'Variable = Variable + Wert // (Varariable + = Wert)' –

Verwandte Themen