Мне нужно возвращать только один результат, мне нужно суммировать все состояния (1, 3)
и (2, 4, 5)
затем вычесть каждый общий пример:Sum и вычитание с помощью Linq C#
cashtransaction_amount, cashtransactionstatus_id
50.00 1 (+)
39.99 2 (-)
330.70 3 (+)
10.00 5 (-)
50.50 4 (-)
30.00 2 (-)
Sum(1,3): 50.00 + 330.70 = 380.70
Sum(2, 5, 4): 39.99 + 10.00 + 50.50 + 30.00 = 130.49
Final Result Sum(1,3) - Sum(2, 5, 4): 380.70 - 130.49 = 250.21
I судимый:
(from DataRow Transaction_DataRow in Dt_transaction.AsEnumerable()
where Transaction_DataRow.Field<Int32>("cashpaymenttype_id") == 1 // Cash Money
group Transaction_DataRow by Transaction_DataRow.Field<Int32>("cashtransactionstatus_id") into tmp
select new
{
cashtransaction_amount = tmp.Sum(x => (x.Field<Int32>("cashtransactionstatus_id") == 1 || x.Field<Int32>("cashtransactionstatus_id") == 3) ? x.Field<Double>("cashtransaction_amount") : -x.Field<Double>("cashtransaction_amount"))
}).Aggregate(Transaction_DataTable, (dt, result) => { dt.Rows.Add(result.cashtransaction_amount); return dt; });
Спасибо за помощь, что вы можете сказать мне, где определяется 'b' var? потому что я получаю следующую ошибку: 'Имя 'b' не существует в текущем контексте' –
x должен был быть b. Исправлено. – SimpleVar
. Друг попробовал по-разному ваш пример и всегда дает мне плохой результат, может, пожалуйста, дать мне полный пример, примененный к моему коду? Спасибо –