При использовании типа как коллекции в предложении foreach тип должен иметь метод GetEnumerator, который возвращает объект с функцией MoveNext с логическим результатом и свойством Current. Обычно это реализуется путем реализации IEnumerable. Однако это не требуется.
В С#, GetEnumerator должен быть определен в самом типе коллекции.
В Vb.Net допускается дооснащение GetEnumerator с помощью методов расширения.
Почему не в С#?
Найдено путем переопределения классов .NET tuple в Vb.NET сначала и переведите на С# позже.
Пример кода: https://github.com/nicenemo/Noaber?files=1