我想创建一个 Linq 查询来比较单个表中多行的日期。该表包含轮询 Web 服务以获取帐户余额数据的数据。不幸的是,轮询间隔不是 100% 确定的,这意味着每个帐户每天可以有 0-1 个条目。
对于应用程序,我需要将这些数据重新格式化为某种格式(见下面的输出)。我包括了样本数据和表格的描述。
任何人都可以帮助我处理将产生所需输出的 EF Linq 查询吗?
桌子:
id 账户编号 balance 计量时账户中的可用额度 create_date 检索数据的日期时间
表名:Balances
字段:id(int)
字段:balance(bigint)
字段:create_date(datetime)
样本数据:
id 余额 create_date 3 40 2012-04-02 07:01:00.627 1 55 2012-04-02 13:41:50.427 2 9 2012-04-02 03:41:50.727 1 40 2012-04-02 16:21:50.027 1 49 2012-04-02 16:55:50.127 1 74 2012-04-02 23:41:50.627 1 90 2012-04-02 23:44:50.427 3 3 2012-04-02 23:51:50.827 3 -10 2012-04-03 07:01:00.627 1 0 2012-04-03 13:41:50.427 2 999 2012-04-03 03:41:50.727 1 50 2012-04-03 15:21:50.027 1 49 2012-04-03 16:55:50.127 1 74 2012-04-03 23:41:50.627 2 -10 2012-04-03 07:41:50.727 1 100 2012-04-03 23:44:50.427 3 0 2012-04-03 23:51:50.827
预期输出:
id 帐户 ID
日期 用于在行中生成日期的数据组件
balance_last_measurement 日期
差 的最后一次测量的余额 日期的第一次和最后一次测量之间的余额差
- 在 2012 年 4 月 2 日,id 2 只有 1 个测量值,它将差值设置为最后(也是唯一的)测量值。
id 日期 balance_last_measurement 差异 1 2012-04-02 90 35 1 2012-04-03 100 10 2 2012-04-02 9 9 2 2012-04-03 -10 -19 3 2012-04-02 3 -37 3 2012-04-03 0 37
更新时间 2012-04-10 20:06
Raphaël Althaus 的回答非常好,但我在最初的请求中确实犯了一个小错误。“预期输出”中的差异字段应该是:
- 前一天最后一次测量与当天最后一次测量的差值
- 如果没有前一天,则应使用当天的第一次测量和最后一次测量
这可能吗?好像很复杂?