It is best to create a type Pair<T1, T2> and return its sequence. (Or use an anonymous type to do the same.)
You can "unzip" it with:
var firstElements = pairs.Select(pair => pair.First); var secondElements = pairs.Select(pair => pair.Second);
You should probably materialize pairs first, though (for example, call ToList() at the end of your first request) to avoid evaluating the request twice.
Basically, this is exactly the same as your F # approach, but without built-in support.
source share