2016-04-04 5 views
0

Я пытаюсь подсчитать Всего количество Вес в определенной колонке.Как подсчитать общее количество столбцов в таблице

Я пробовал следующую кодировку, но мне кажется, что я получаю только значение первой строки, а не остальное.

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; 
} 

Так что мой вопрос: Как я могу подсчитать общее количество Веса колонка в моей таблице?

ответ

3

Вы, очевидно, хотите добавить текущий номер к Weigth, который вы уже получили, не так ли? Кроме того, вам не нужно создавать новый экземпляр QuoteItemSectionGroup только для того, чтобы временно установить его свойство Weight.

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 
} 

+= оператор в x += 1 просто ярлык для x = x + 1.

Или еще проще, используя Linq Sum -метод

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

EDIT: Кроме того, вы можете упростить ваш код немного, чтобы он, наконец, становится этим:

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

Спасибо за ответ человека. Я не догадывался о большинстве теорий C#, но можете ли вы дать мне основное объяснение того, как работает '+' перед '='? – CareTaker22

+0

Блестящий! Второй - замечательный. – CareTaker22

+1

@ CareTaker22 синтаксис + = не является теорией C#, но он работает на большинстве языков. Его короткое сокращение для 'variable = variable + value // (varariable + = value)' –

Смежные вопросы