Отслеживание баланса счета и информации - PullRequest
2 голосов
/ 03 октября 2011

Я работаю над простым финансовым приложением, использующим MVVM & LinqToSql.Я пытаюсь найти лучший способ структурировать свои данные.Вот что у меня есть (упрощенно):

Account

  • AccountId (PK)
  • AccountName
  • AccountBalance (возвращаетсумма в столбце транзакций)
  • Транзакции (EntitySet)

Я работаю над отображением списка транзакций для данной учетной записи, и у меня возникли некоторые проблемы.Что я хотел бы сделать, это отобразить транзакции, сгруппированные по дате.Для этого я использую элемент управления LongListSelector, который позволяет группировать.Источник данных для элемента управления следующий:

var transByDate = from trans in App.ViewModel.AllTransactions
                  trans by trans.TransDate.ToString("d") into t
                  t.Key ascending
                  new Transaction<Transaction>(t.Key, t);

this.lls_transByDate.ItemsSource = transByDate;

Это работает, и я вижу заголовки моей группы с датой, с данными транзакции за этот день под ней.

У меня проблема с отображением ежедневного баланса в заголовке с каждой датой.Как я могу структурировать свои данные так, чтобы баланс счета был легко доступен по дате, но мог быть обновлен (если пользователь возвращается на 2 недели назад и вносит изменения в существующую транзакцию).

Редактировать Что бы я хотел увидеть:

[02.10.2011 -------------- 753,23 $]

Транзакция 1 - Бакалея - 30,00 $

[01.10.2011 -------------- $ 723,23]

Банк - Автомобиль - $ 400,00

Магазин - Продуктовый - $ 35,00

[31.09.2011 -------------- $ 288,23]

и т. Д.

1 Ответ

1 голос
/ 08 октября 2011

В моем классе Transaction<T> я добавил еще одно свойство под названием TransAmount.Поэтому, когда конструктор вызывается из приведенного выше блока кода, вот что он делает.

public Transaction(string transDate, IEnumerable<T> items)
{
    DateTime tmpDate = DateTime.Parse(transDate);

    var deposits = from t in App.ViewModel.AllTransactions
                        where t.TransDate <= new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 23, 59, 59, 999)
                        where t.TransType == (int)TransType.Deposit
                        select t.TransAmount;

    var withdrawals = from t in App.ViewModel.AllTransactions
                        where t.TransDate <= new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 23, 59, 59, 999)
                        where t.TransType == (int)TransType.Withdrawal
                        select t.TransAmount;

    decimal total = (deposits.Sum() - withdrawals.Sum());

    this.TransAmount = total;
    this.TransDate = transDate;
    this.Items = new List<T>(items);
}

Затем я просто связываю свой XAML с этим свойством.Возможно, есть более чистый способ сделать это, но я думаю, что пересчет баланса будет более чистым, чем сохранение баланса в его базе данных.

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