La meilleure solution consiste probablement à créer un Pair<T1, T2>
et renvoie une séquence de ce type. (Ou utiliser un type anonyme pour faire la même chose).
Vous pouvez ensuite le "dézipper" avec :
var firstElements = pairs.Select(pair => pair.First);
var secondElements = pairs.Select(pair => pair.Second);
Cela vaut probablement la peine d'être matérialisé pairs
d'abord (par exemple, appeler ToList()
à la fin de votre première requête) pour éviter d'évaluer la requête deux fois.
En fait, c'est exactement la même chose que votre approche F#, mais sans support intégré.