Что касается вашего первого вопроса, вот как вы могли бы это сделать:
var transactions = from t in this.account.transactions
let sum = t.records.Sum(x => x.value)
select new
{
Debt = sum < 0 ? sum.ToString() : String.Empty,
Credit = sum > 0 ? sum.ToString() : String.Empty
};
Что касается вашего второго вопроса, я бы действительно заинтересовался чистым решением.Похоже, что LINQ не предназначен для работы ни с чем, кроме одной записи.Вы могли бы сделать
double balance = 0;
var transactions = from t in this.account.transactions
let sum = t.records.Sum(x => x.value)
let newBalance = balance += sum
select new
{
Debt = sum < 0 ? sum.ToString() : String.Empty,
Credit = sum > 0 ? sum.ToString() : String.Empty,
Balance = newBalance.ToString()
};
, но я бы не назвал это "чистым".=)