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...