【发布时间】:2014-07-09 13:07:20
【问题描述】:
我正在尝试解决以下问题,我有一个包含一些数据的集合:
+-------------+---------------+-------------+
| Date | InitialValue | FinalValue |
+-------------+---------------+-------------+
| 21.05.2003 | 0 | 382087.14 |
| 23.06.2003 | 408206.52 | 110622.79 |
| 19.07.2004 | 123811.34 | 0 |
| 31.12.2011 | 0 | 0 |
| 08.06.2012 | 0 | 501854.71 |
| 31.12.2012 | 501854.71 | 546208.19 |
| 31.12.2013 | 634535.58 | 666284.47 |
| 30.06.2014 | 666284.47 | 725837.32 |
| 08.07.2014 | 725837.32 | 729646.48 |
+-------------+---------------+-------------+
我需要做的是,当最终值等于0时,将这个列表拆分为多个列表。预期的结果应该是这样的:
结果列表 1
+-------------+---------------+-------------+
| Date | InitialValue | FinalValue |
+-------------+---------------+-------------+
| 21.05.2003 | 0 | 382087.14 |
| 23.06.2003 | 408206.52 | 110622.79 |
| 19.07.2004 | 123811.34 | 0 |
+-------------+---------------+-------------+
结果列表 2
+-------------+---------------+-------------+
| Date | InitialValue | FinalValue |
+-------------+---------------+-------------+
| 31.12.2011 | 0 | 0 |
+-------------+---------------+-------------+
结果列表 3
+-------------+---------------+-------------+
| Date | InitialValue | FinalValue |
+-------------+---------------+-------------+
| 08.06.2012 | 0 | 501854.71 |
| 31.12.2012 | 501854.71 | 546208.19 |
| 31.12.2013 | 634535.58 | 666284.47 |
| 30.06.2014 | 666284.47 | 725837.32 |
| 08.07.2014 | 725837.32 | 729646.48 |
+-------------+---------------+-------------+
谁能给我一个优雅的方法来解决我的问题?
【问题讨论】:
-
你有没有尝试自己解决这个问题?
-
我尝试过使用 takewhile,但这只是解决了第一次拆分。我考虑过使用 groupby,但我不知道如何以正确的方式对数据集进行分组
-
这与stackoverflow.com/q/22847802/1549380 几乎是重复的。
-
扎克谢谢你!我输入了正确的搜索,这就是我要找的!抱歉重复
-
@Zack Ah,单行 linq 解决方案。似乎和我的代码一样,但聚合起来很有趣。虽然老实说,我还是会坚持使用 for 循环以提高可读性。