2011-12-24 2 views
3

У меня есть следующий запрос LINQ:Lambda для суммирования стенографии

var q = from bal in data.balanceDetails 
     where bal.userName == userName && bal.AccountID == accountNumber 
     select new 
     { 
      date = bal.month + "/" + bal.year, 
      commission = bal.commission, 
      rebate = bal.rebateBeforeService, 
      income = bal.commission - bal.rebateBeforeService 
     }; 

Я помню лямбда стенографии для суммирования commission поля для каждой строки q. Что было бы лучшим способом суммирования этого? Помимо рутинной обработки результатов?

ответ

9

Это просто - нет необходимости в цикле в коде:

var totalCommission = q.Sum(result => result.commission); 

Обратите внимание, что если вы собираетесь использовать результаты q для выполнения различных расчетов (что представляется разумным предположение, как если бы вы только хотел, чтобы вы ввели комиссию, я сомневаюсь, что вы выберете другие биты), вы получите может хотите материализовать запрос один раз, так что ему не нужно делать всю фильтрацию и проецирование несколько раз. Один из способов сделать это было бы использовать:

var results = q.ToList(); 

Это создаст List<T> для анонимного типа - вы все равно можете использовать Sum выше код на results здесь.

+0

Благодарим вас за ответ и бесплатный отзыв :) –

+0

Отметьте ответ как правильный, так :) – ivowiblo

+0

Похоже, что я ваш второй рождественский перелет Jon :) –