2014-09-23 38 views
2

我閱讀了這個問題:Split List into Sublists with LINQ但它不幫我解決以下問題。通過分隔符將列表拆分爲子列表而不是通過C#中的索引

我有以下列表

18 
0 
abcde 
678 
----- 
23 
1 
abcde 

----- 
66 
4 
3rwer 
1 
another item 

我如何通過-----分離拆分此列表分成子列表?

感謝

+2

你期望回收多少物品,三個或四個? – dasblinkenlight 2014-09-23 16:17:16

+0

這是可變的......這就是爲什麼我把'-----'分隔符。現在我希望有三個子列表。 – 2014-09-23 16:17:53

+2

@SnakeEyes:關鍵是你最後有一個分隔符......你想讓最後一個返回的元素成爲一個空列表嗎? – 2014-09-23 16:18:14

回答

2

我不知道現有的運營商在LINQ這樣對對象本身,更多的MoreLINQ projectSplit方法,所以你可以使用:

var sections = originalList.Split("-----"); 

一個返回IEnumerable<IEnumerable<string>> - 如果你需要一個列表的列表,你可以使用:

var sections = originalList.Split("-----") 
          .Select(section => section.ToList()) 
          .ToList(); 

MoreLINQ有NuGet package,你可能希望用於安裝。

+1

['Split'](https://code.google.com/p/morelinq/source/browse/MoreLinq/Split.cs)在第179行有一個小錯誤:'if(source == null)拋出新的ArgumentNullException(「separatorFunc」);'可能應該是'separatorFunc == null'。 – dbc 2014-09-23 16:33:08

+1

@dbc:是的,你說得對。我會解決這個問題。不過,它適用於其他情況:) – 2014-09-23 16:36:25