C# 将数组1中的每个元素与数组2中的每个元素组合起来

C# 将数组1中的每个元素与数组2中的每个元素组合起来,c#,C#,我会保持简单。我的数据集如下: 阵列1: James Bob Jim 阵列2: 0 1 2 我想通过连接两个阵列来创建一个新阵列,以便它们生成如下内容: James 0 James 1 James 2 Bob 0 Bob 1 Bob 2 Jim 0 Jim 1 Jim 2 怎么能用C#来做呢。我以前遇到过这个问题,我记得使用了扩展方法,但我不知道这属于集合论的哪个领域。您将使用交叉连接(笛卡尔积): 现场查看:您正在寻找交叉产品: from a in a1 from b in a2 sel

我会保持简单。我的数据集如下:

阵列1:

James
Bob
Jim
阵列2:

0
1
2
我想通过连接两个阵列来创建一个新阵列,以便它们生成如下内容:

James 0
James 1
James 2
Bob 0
Bob 1
Bob 2
Jim 0
Jim 1
Jim 2

怎么能用C#来做呢。我以前遇到过这个问题,我记得使用了扩展方法,但我不知道这属于集合论的哪个领域。

您将使用交叉连接(笛卡尔积):


现场查看:

您正在寻找交叉产品:

from a in a1
from b in a2
select new { a, b }

您需要笛卡尔连接或交叉连接。使用
选择many
还有一种方法:

var arr1 = new string [] {"James","Bob","Jim"};
var arr2 = new int [] { 1, 2, 3};

var query = arr1.SelectMany(x => arr2, (x, y) => new { x, y });

foreach(var item in query)
{
  Console.WriteLine(item);
}

这是另一条路:

            string[] names = { "James", "Bob", "Jim" };
            int[] numbers = { 0, 1, 2 };
            string[] result = new string[names.Length * 3];
            for (int i = 0, y = 0 ; i < result.Length; i+=3,y++)
            {
                result[i] = names[y] + numbers[0].ToString();
                result[i + 1] = names[y] + numbers[1].ToString();
                result[i + 2] = names[y] + numbers[2].ToString();
            }
string[]name={“James”、“Bob”、“Jim”};
int[]数字={0,1,2};
字符串[]结果=新字符串[names.Length*3];
对于(int i=0,y=0;i
结果数组的类型是什么,
string[]
?我猜第一个数组是string,第二个是int,就像tim问的那样,结果是什么?通常术语“完全外部连接”用于其他类型,这称为交叉连接。
            string[] names = { "James", "Bob", "Jim" };
            int[] numbers = { 0, 1, 2 };
            string[] result = new string[names.Length * 3];
            for (int i = 0, y = 0 ; i < result.Length; i+=3,y++)
            {
                result[i] = names[y] + numbers[0].ToString();
                result[i + 1] = names[y] + numbers[1].ToString();
                result[i + 2] = names[y] + numbers[2].ToString();
            }