我正在使用MVVM& amp; LinqToSql。我正试图找出构建数据的最佳方法。这是我的(简化):
帐户
我正在努力显示给定帐户的交易列表,而且我遇到了一些麻烦。我想要做的是显示按日期分组的交易。为此,我使用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]
等
答案 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绑定到该属性。也许有一种更简洁的方法可以做到这一点,但我认为重新计算余额会比在数据库中存储余额更清晰。