Linq и условная сумма
У меня есть класс и список, как показано ниже:
class C1
{
int RecType ...;
decimal Income ...;
decimal Outcome ...;
}
List<C1> myList ...;
Список загружен несколькими записями, и они имеют различные значения в RecType
Я хочу рассчитать общую сумму по доходам и результатам, но только для определенного значения RecType
Здесь псевдо-код того, что мне нужно получить
totalIncome = myList.Sum(Income).Where(RecType==1);
Как я могу выполнить это с помощью linq?
Спасибо
Ответы
Ответ 1
totalIncome = myList.Where(x => x.RecType == 1).Select(x => x.Income).Sum();
Сначала вы фильтруете тип записи (Where
); то вы преобразовываете Select
в Income
каждого объекта; и, наконец, вы Sum
все это.
Или для немного более короткой версии:
totalIncome = myList.Where(x => x.RecType == 1).Sum(x => x.Income);
Ответ 2
totalIncome = myList.Sum(c=>
(c.RecType==1 ? c.Income : 0));