如果我有一个包含任意数量列表的列表,如下所示:
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...
};
...有没有办法以某种方式将列表“压缩”或“旋转”成这样的东西?
{ 
    { "a", "1", "w", ... },
    { "b", "2", "x", ... },
    { "c", "3", "y", ... },
    { "d", "4", "z", ... }
}
显而易见的解决方案是执行以下操作:
public static IEnumerable<IEnumerable<T>> Rotate<T>(this IEnumerable<IEnumerable<T>> list)
{
    for (int i = 0; i < list.Min(x => x.Count()); i++)
    {
        yield return list.Select(x => x.ElementAt(i));
    }
}
// snip
var newList = myList.Rotate();
...但我想知道是否有更清洁的方法,使用 linq 或其他方式?
