【发布时间】:2020-07-21 22:00:59
【问题描述】:
我在下面模拟了DataTable:
+----+------+-------------+--------+
| ID | YEAR | PERSON_NAME | AMOUNT |
+----+------+-------------+--------+
| 1 | 2004 | BARBARA | 500 |
| 2 | 2004 | BOB | 100 |
| 3 | 2004 | JANE | 30 |
| 4 | 2004 | JOHN | 200 |
| 5 | 2005 | BARBARA | 505 |
| 6 | 2005 | BOB | 150 |
| 7 | 2005 | JANE | 15 |
| 8 | 2005 | JOHN | 215 |
| 10 | 2006 | BARBARA | 523 |
| 11 | 2006 | BOB | 185 |
| 12 | 2006 | JANE | 25 |
| 13 | 2006 | JOHN | 207 |
+----+------+-------------+--------+
我正在尝试添加一个新列来跟踪每个人的金额的逐年变化:
+----+------+-------------+--------+-------+
| ID | YEAR | PERSON_NAME | AMOUNT | Y-O-Y |
+----+------+-------------+--------+-------+
| 1 | 2004 | BARBARA | 500 | |
| 2 | 2004 | BOB | 100 | |
| 3 | 2004 | JANE | 30 | |
| 4 | 2004 | JOHN | 200 | |
| 5 | 2005 | BARBARA | 505 | 5 |
| 6 | 2005 | BOB | 150 | 50 |
| 7 | 2005 | JANE | 15 | -15 |
| 8 | 2005 | JOHN | 215 | 15 |
| 10 | 2006 | BARBARA | 523 | 18 |
| 11 | 2006 | BOB | 185 | 35 |
| 12 | 2006 | JANE | 25 | 10 |
| 13 | 2006 | JOHN | 207 | -8 |
+----+------+-------------+--------+-------+
我通过使用一些ON 条件将表连接到自身,在 SQL 中轻松实现了这一点,并试图模仿与 c#DataTable 相同的逻辑并让它以某种复杂的方式工作。我想知道是否有使用 LINQ 或DataViews 的更简洁的方法,或者只是一种紧凑的算法来达到相同的效果。谢谢!
【问题讨论】:
-
由于 YOY 变化是计算值而不是数据中的规范值,我建议将其推向下游。将其添加到您的模型类中,或根据需要在控制器或视图中动态计算它
-
是修改源
DataTable还是新建一个DataTable?