我有一個數組List<SomeObject>
其中包含升序的日期(和一些更多的信息領域)。該列表將分組到List<List<SomeObject>>
,這與我的主題相關。拆分列表<SomeObject>到幾個子列表
一個List<SomeObject>
組合成List<List<SomeObject>>
。在這前一種情況下只包含1行。
某些計算髮生在該行的LastOrDefault和FirstOrDefault上。 (最後,該方法返回一個具有日期,類型和計算值的SomeObject)。
List<List<SomeObject>> Array; // Should be filled with the grouped List<SomeObject>
List<SomeObject> // One SomeObject is a row below,
2011-01-01 enumType.Ok 140.0
2011-01-02 enumType.Ok 210.0
2011-01-03 enumType.Ok 250.0
2011-01-04 enumType.Blocking 310.0
2011-01-05 enumType.Ok 4.0
2011-01-06 enumType.Ok 34.0
2011-01-07 enumType.Ok 93.0
and counting..
數組中的每一行都有一個類型(枚舉),通常是「好」。
此數組可能有「NotOk」而不是「Ok」(簡化說明)。
所以,問題是,
行2011-01-05有NotOk
,必須拆分陣列。結果如下。所有行到封閉在一個陣列中,則對於行的其餘部分下一個陣列(或「阻塞」的下一個點。
List<SomeObject>
2011-01-01 enumType.Ok 140.0
2011-01-02 enumType.Ok 210.0
2011-01-03 enumType.Ok 250.0
2011-01-04 enumType.Blocking 310.0
List<SomeObject>
2011-01-05 enumType.Ok 4.0
2011-01-06 enumType.Ok 34.0
2011-01-07 enumType.Ok 93.0
and counting..
然後,我可以單獨做GROUPBY /每個列表上計算總和並最後總結每個GROUPBY在一起。
[編輯]
筆者從BrokenGlass答案,這工作完全一樣說明。雖然幫助,我在我的問題一個錯字是改變他的答案的行爲。此下一個陣列中的第一項應該是AFTER .Blocking。在if(currentList.Count
- 條款之前,只需要他的currentList.Add(item);
,答案是仍然正確。請注意,只有在需要時才應該進行此擴展,因爲每次由於「阻止」而需要循環每個值時,我都會錯過Q的要點。
你有一個列表''或'名單<名單>'?你的代碼顯示後者,但你的描述表明前者。 –
每行都有枚舉類型?你能證明它在哪裏嗎?我看到一個SomeObject列表的列表。 – Nayan
澄清問題! – Independent