从List中获取5个字符串组

Blu*_*ppy 6 .net c# linq

我有一个List<string>,我想从中获取5个项目组.没有键或任何简单的分组......但它总是5的倍数.

例如

{"A","16","49","FRED","AD","17","17","17","FRED","8","B","22","22","107","64"}
Run Code Online (Sandbox Code Playgroud)

参加团队:

"A","16","49","FRED","AD"
"17","17","17","FRED","8"
"B","22","22","107","64"
Run Code Online (Sandbox Code Playgroud)

但我无法找到一个简单的方法来做到这一点!

很确定它可以用枚举和Take(5)来完成......

Flo*_*ger 7

 List<List<string>> result = new List<List<string>>();
 for(int i = 0; i < source.Count; i += 5 )
      result.Add(source.Skip(i).Take(5).ToList());
Run Code Online (Sandbox Code Playgroud)

像这样?

  • 这有很糟糕的运行时性能,请参阅我在问题中的评论. (6认同)

Tim*_*ter 7

你可以使用整数除法技巧:

List<List<string>> groupsOf5 = list
    .Select((str, index) => new { str, index })
    .GroupBy(x => x.index / 5)
    .Select(g => g.Select(x => x.str).ToList())
    .ToList();
Run Code Online (Sandbox Code Playgroud)