Mon objectif était de sérialiser le résultat en JSON avec JavascriptSerializer avec un tableau non-associatif (pas de paire clé-valeur).
public static object[] ToTuple<T, U, V>(this 
IEnumerable<T> queryable, Func<T, U> t1)
        {
            List<object[]> tab = new List<object[]>();
            foreach (var e in queryable)
                tab.Add(new object[] { t1.Invoke(e) });
            return tab.ToArray();
        }  
 
//...
 
public static object[] ToTuple<T, U, V, W, X, Y, Z>(this 
IEnumerable<T> queryable, Func<T, U> t1, Func<T, V> 
t2, Func<T, W> t3, Func<T, X> t4, Func<T, Y> t5, 
Func<T, Z> t6)
        {
            List<object[]> tab = new List<object[]>();
            foreach (var e in queryable)
                tab.Add(new object[] { t1.Invoke(e), t2.Invoke(e), t3.Invoke(e), t4.Invoke(e), t5.Invoke(e), t6.Invoke(e) });
            return tab.ToArray();
        } 
Ces méthodes sont à ajouter dans des classes statiques pour être utilisables.
Note : on pourrait retourner un Tuple<U,V...>[] à la place de object[], mais la sérialisation serait associative avec les clés Item1, Item2...