Лямбда для подведения итогов - PullRequest
3 голосов
/ 25 декабря 2011

У меня следующий запрос LINQ:

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.Как лучше всего подвести итог?Помимо ручного просмотра результатов?

1 Ответ

9 голосов
/ 25 декабря 2011

Это просто - не нужно зацикливаться в вашем коде:

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

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

var results = q.ToList();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...