我會保持這種簡單。我的數據集如下:將陣列1中的每個元素與陣列2中的每個元素結合起來
陣列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中的每個元素與陣列2中的每個元素結合起來
陣列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#中完成。我之前遇到過這個問題,我記得使用了擴展方法,但我不知道集合論的哪個領域屬於這個領域。
你會用一個交叉聯接(笛卡爾積):
var result = from x in array1
from y in array2
select string.Format("{0} {1}", x, y);
通常術語「完全外部聯接」用於其他內容,這稱爲___cross join___。 –
@JeppeStigNielsen:對,謝謝。修復。 –
你正在尋找一個跨產品:
from a in a1
from b in a2
select new { a, b }
你需要笛卡爾加入或交叉加入。另一種方式使用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();
}
你是什麼結果數組,字符串'[]'的類型? –
我想第一個數組是字符串,第二個是int和像蒂姆問什麼結果? – terrybozzio
結果是一個字符串[] –