将数组1中的每个元素与数组2中的每个元素组合

3
我会尽力简洁明了地翻译。以下是需要翻译的内容:

我会简单介绍一下。我的数据集如下:

数组 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
你的结果数组的类型是什么,string[] - Tim Schmelter
我猜第一个数组是字符串,第二个是整数,就像蒂姆问的那样,结果是什么? - terrybozzio
4个回答

6
您正在寻找一个叉积:

您正在寻找一个叉积:

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

5
您可以使用交叉连接(笛卡尔积)来实现:
var result = from x in array1
             from y in array2
             select string.Format("{0} {1}", x, y);

请查看实际演示:http://ideone.com/1TdKGy

通常,“全外连接”这个术语是用于其他内容的,而这被称为“交叉连接”。 - Jeppe Stig Nielsen

1
你需要使用笛卡尔积或交叉连接。还有一种使用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);
}

0

这是另一种方法:

            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();
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接