Presently sponsored by Serverless Guru: Your guide to cloud excellence, helping you every step of your serverless journey, including team training, pattern development, mass service migrations, architecting, and developing new solutions. Speak to a Guru today.
Suppose you have an array of numbers, say, [1, 3, 5, 7, 9, …], and you want to pair each element up with its neighbour in the array, e.g. [[1, 3], [3, 5], [5, 7], [7, 9], …].
Sure, you can iterate through the indices of the elements and recursively grab the element at an index and its neighbour:
1: // an array of odd numbers
2: var arr = new[] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 };
3:
4: // standard imperative way, iterate through the indices and grab
5: // the elements from the arrays
6: var arrPairs = new List<int[]>();
7: for (var i = 0; i < arr.Length - 1; i++)
8: {
9: arrPairs.Add(new[] { arr[i], arr[i+1] });
10: }
OR, you can use LINQ and the Zip method added in .Net 4 and do this instead:
1: var arrPairsLinq = arr.Skip(1).Zip(arr, (second, first) => new[] { first, second }).ToArray();
A much more elegant solution, no? ;-)
This helped me. Thank you Yan.
You’re welcome Rikki, glad you found it useful :-)