Jak transponować wymiary w kolekcji 2D za pomocą LINQ?

Rozważ następującą strukturę:

IEnumerable<IEnumerable<int>> collection = new[] { 
    new [] {1, 2, 3}, 
    new [] {4, 5, 6}, 
    new [] {7, 8, 9} 
};

Jak mogę wyliczyć tę kolekcję, aby uzyskaćIEnumerable<int>&nbsp;kolekcje składające się z pierwszych przedmiotów, drugich przedmiotów itp.?

To znaczy {1, 4, 7}, {2, 5, 8}, ...

(Chociaż implementacja, którą wybrałem, jestint[]&nbsp;obiekty, załóżmy, że maszIEnumerable<int>&nbsp;funkcjonalność. Dzięki.)