Я думаю, что вы здесь на 95%, и, собрав свой пример, вы на 99%.
Ваш запрос даст вам декартово произведение, как вы пожелаете.
var A = new[] {A, B};
var B = new[] {X, Y, Z};
var Product = from _A in A
from _B in B
select new[] { _A, _B };
Product
сейчас и IEnumerable<T>
.Это выглядело бы так:
[
[A, X]
[A, Y]
[A, Z]
[B, X]
[B, Y]
[B, Z]
]
Все, что вам нужно сделать сейчас, это перечислить его значения, которые вы имеете в своем намерении (хотя имя переменной неверно):
//Intent below:
foreach (pair in Product)
{
SomeFunction(pair[0], pair[1]);
}