我会保持这个简单。我的数据集如下:
阵列 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# 中完成。我以前遇到过这个问题,我记得使用扩展方法,但我不知道这属于集合论的哪个领域。
我会保持这个简单。我的数据集如下:
阵列 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 }
您将使用交叉连接(笛卡尔积):
var result = from x in array1
from y in array2
select string.Format("{0} {1}", x, y);
现场观看:http: //ideone.com/1TdKGy
您需要笛卡尔连接或交叉连接。另一种方法是使用SelectMany
:
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();
}