2015-08-16 185 views
0

我试图将一些逗号分隔的行分割成最大大小为2的组。 如何将组的集合转换为列表如下所示? 我预计分区在分组之后是3,然后是4。如何将IEnumerable <IEnumerable <IGrouping <int,string> >>转换为IEnumerable <IEnumerable <string>>

List<string> chunk = new List<string>() 
      { 
       "a,b,c", 
       "a,d,e", 
       "b,c,d", 
       "b,e,d", 
       "b,f,g", 
       "e" 
      }; 

      var partitons = chunk.GroupBy(c => c.Split(',')[0], (key, g) => g); 
      var groups = partitons.Select(x => x.Select((i, index) => new { i, index }).GroupBy(g => g.index/2, e => e.i)); 
      IEnumerable<IEnumerable<string>> parts = groups.Select(???) 

回答

0

试试这个:

partitons = groups.Select(x => x.SelectMany(y => y)); 

我得到这个:

partitons

+0

我想作为输出是什么了IEnumerable > {{a,b,c},{a,d,e}}。 {{b,c,d},{b,e,d}}, {{b,f,g}}, {{e}} } – user330612

+0

这正是我的答案给你的。 – Enigmativity

+0

@ user330612 - 除了您的查询不会将'{b,f,g}'分开。 – Enigmativity

1

这就是我想要的

var parts = groups.SelectMany(x => x).Select(y => y.Select(z => z)); 
相关问题