2012-11-23 119 views
3

我有三個陣列,每個陣列都有不同的數據。我想將它們作爲單個數組加入,其中每個數組中的0索引處的元素必須位於新創建的數組中的相同索引處。將三個陣列按其索引合併到單個陣列

例如:

arr1[0]="Trailor"; 
arr1[1]="Total Recall"; 

arr2[0]="Life of Pi"; 
arr2[1]="BDRIP"; 


arr3[0]="350MB"; 
arr3[1]="4.37GB" 

只是我想與任何尺寸,但在上述陣列中的元素的新的數組,應通過所述環進行訪問。

我要打印的元素在表中象下面這樣:

<table> 
     <thead> 
      <tr> 
       <td>Film Title</td> 
       <td>Type</td> 
       <td>Size</td>  
      </tr> 
     <thead> 
      <tr> 
       <td>Trailor</td> 
       <td>Life of Pi</td> 
       <td>350MB</td>  
      </tr> 
      <tr> 
       <td>Total Recall</td> 
       <td>BDRIP</td> 
       <td>4.37GB</td>  
      </tr> 


<table> 
+0

我不明白你想要什麼...留下空方括號在你的理想狀態是在指定你的目標。 – SAJ14SAJ

+0

你想在'newArr [0]'中擁有什麼?你有三個候選人。 –

+1

爲什麼不用定義屬性'Title','Type'和'Size'來定義一個對象'Movie',並使用它們的數組? – jeroenh

回答

2

你可以使用Concat,如果你只是想所有的陣列連接在一起:

arr1.Concat(arr2).Concat(arr3); 

如果你想有一個新的二維陣列,然後簡單地創建並填充它:

var setOfArrays = new string[][] { arr1, arr2, arr3 }; 

使用相同的方括號語法 setOfArrays[setIndex][itemIndex]他們次

編輯訪問...

for (int i=0 ; i<setOfArrays.Length ; i++) 
{ 
    for (int j=0 ; j<setOfArrays[i].Length ; j++) 
    { 
     Console.WriteLine(setOfArrays[i][j]); 
    } 
} 
+0

System.Collections.Generic.List 是一種類型,但用作變量。 –

+0

@BhushanFrake對不起,我的答案有一個錯字 - 請看我的編輯,現在應該工作。 – McGarnagle

+0

如何從這個數組訪問一個元素呢? –

2

這將是,如果你將創建用於存儲數據的類(或結構)要容易得多。更可以理解的,如果你以後閱讀:

class Record 
{ 
    public String Title {get; set;} 
    public String Type {get; set;} 
    public String Size {get; set;} 

    public Record(String title, String type, String size) 
    { 
     Title = title; 
     Type = type; 
     Size = size; 
    } 
} 

然後就是填補這些對象的列表與您的數據:

List<Record> records = new List<Record>(); 

for(int i=0; i<elementcount; i++) 
    records[i] = new Record(arr1[i], arr2[i], arr3[i]); 
+0

描述將其打印在一張表我同意的對象(I幾乎從來不使用結構,因爲它們在C#中的價值語義會以最糟糕的方式讓你感到驚訝)通常定製的目的往往是更好的表示。 – SAJ14SAJ

0

爲簡單起見,我沒有使用你的HTML例子,但這代碼顯示了一個可行的技術:

void Main() 
{ 
    var one = new string[] { "one", "two" }; 
    var two = new string[] { "apple", "pear" }; 
    var three = new string[] { "cat", "dog" }; 

    GroupFormatDemo(one, two, three); 

} 
void GroupFormatDemo(params string[][] args) 
{ 
    foreach (var a in args) 
    { 
     Console.WriteLine("First={0}, Second={1}", a[0], a[1]); 
    } 
} 
0
定義

類類型從每個三個陣列的保持數據的一個元素:

public class Data 
{ 
    public string Item1 { get; set; } 
    public string Item2 { get; set; } 
    public string Item3 { get; set; } 
} 

然後構建這些對象的數組,與從原來的陣列值填充的字段:

var list = new List<Data>(); 
for (int i = 0; i < arr1.Length; i++) 
{ 
    list.Add(new Data() { Item1 = arr1[i], Item2 = arr2[i], Item3 = arr3[i] }; 
} 

var dataArray = list.ToArray(); 

這個循環假定ARR1,ARR2和ARR3都具有完全相同的長度。

然後,您可以訪問下一個索引的數據,指的是感興趣的特定領域:

Console.WriteLine(dataArray[x].Item1, dataArray[x].Item2, dataArray[x].Item3); 
0

這是我對一個LINQ Solution.This問題會產生一個單一的陣列,包含元素在同一個索引上加入。

List<string[]> movies = new List<string[]>() {arr1, arr2, arr3}; 


var mergedArray = movies.Aggregate((sArrOne, sArrtwo) => 
           sArrOne.Zip(sArrtwo, (one, two) => one += " "+two) 
         .ToArray()); 

mergedArray[0] - 的> TRAILOR生命丕350MB