跟踪帐户余额和信息

时间:2011-10-03 18:17:49

标签: c# silverlight windows-phone-7 mvvm

我正在使用MVVM& amp; LinqToSql。我正试图找出构建数据的最佳方法。这是我的(简化):

帐户

  • AccountId(PK)
  • 帐户名
  • 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周并对现有交易进行更改)。

修改我想看到的内容:

[10/2/2011 -------------- $ 753.23]

交易1 - 杂货 - $ 30.00

[10/1/2011 -------------- $ 723.23]

银行 - 车辆 - $ 400.00

商店 - 杂货店 - $ 35.00

[09/31/2011 -------------- $ 288.23]

1 个答案:

答案 0 :(得分:1)

在我的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绑定到该属性。也许有一种更简洁的方法可以做到这一点,但我认为重新计算余额会比在数据库中存储余额更清晰。