2015-08-16 5 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)); 
Смежные вопросы