将Array 1中的每个元素与Array 2中的每个元素组合在一起

时间:2013-07-16 21:38:58

标签: 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#中完成。我之前遇到过这个问题,我记得使用扩展方法,但我不知道Set Theory的哪个区域属于这个问题。

4 个答案:

答案 0 :(得分:6)

您正在寻找跨产品:

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

答案 1 :(得分:5)

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

var result = from x in array1
             from y in array2
             select string.Format("{0} {1}", x, y);

现场直播:http://ideone.com/1TdKGy

答案 2 :(得分: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);
}

答案 3 :(得分: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();
            }