如果我有一个包含任意数量列表的列表,如下所示:
var myList = new List<List<string>>()
{
new List<string>() { "a", "b", "c", "d" },
new List<string>() { "1", "2", "3", "4" },
new List<string>() { "w", "x", "y", "z" },
// ...etc...
};
Run Code Online (Sandbox Code Playgroud)
...有没有办法以某种方式将列表"压缩"或"旋转"成这样的东西?
{
{ "a", "1", "w", ... },
{ "b", "2", "x", ... },
{ "c", "3", "y", ... },
{ "d", "4", "z", ... }
}
Run Code Online (Sandbox Code Playgroud)
显而易见的解决方案是做这样的事情:
public static IEnumerable<IEnumerable<T>> Rotate<T>(this IEnumerable<IEnumerable<T>> list)
{
for (int i = 0; i < list.Min(x => x.Count()); i++) …Run Code Online (Sandbox Code Playgroud) 是否有可枚举的扩展方法无限期地重复可枚举?
因此,例如,给定一个可返回的枚举:["a","b","c"].我想要一个返回无限重复序列的方法["a","b","c","a","b","c","a","b","c"...... ]
这听起来有点像Observable.Repeat,除了我想在IEnumerables上操作.
Enumerable.Repeat仅从单个元素生成可枚举.