2011-06-01 47 views
0

您好,我在想知道是否有任何方法可以將多個ArrayList合併到多個數組中。將多重列表轉換爲多維數組

Exmaple

我有arraylist1其中包含名稱。包含電話號碼的arraylist 2和包含地址的arraylist 3。我怎麼能將這些合併成一個多數組,以便將它作爲一個記錄?

+3

什麼版本的.NET(的幫助我知道是否你可以使用LINQ或不使用,也可以使用列表而不是ArrayList)? – 2011-06-01 18:41:39

+2

數組以相同的順序?我的意思是,名稱[0] = PhoneNumbers [0] =地址[0]? – 2011-06-01 18:41:51

回答

2

讓假設你有串並ith指數形式記錄所有元素三個ArrayList中,

ArrayList Names = new ArrayList(); 
ArrayList Phone = new ArrayList(); 
ArrayList Address = new ArrayList(); 
ArrayList res = new ArrayList(); 

for(int i=0; i<Names.Count; i++) 
{ 
    res.Add(new string[]{Names[i].ToString(), Phone[i].ToString(), Address[i].ToString()}); 
} 
+0

你也可以做一個新的對象[]或一個新的類或結構來保存每個組合成員,所以你不必處理「字符串化」。 – 2011-06-01 18:50:22

+0

但是,如何從arraylist中獲取信息? – Andy12 2011-06-01 20:00:36

+0

取回值類型將其轉換爲字符串[]。 – 2011-06-02 04:20:55

1

難道這些的ArrayList以某種方式相關的內容,如通訊錄?

如果是這樣,請考慮創建一個類來表示一個聯繫人。此聯繫人類可以具有姓名,電話號碼和地址屬性。您甚至可以爲這些屬性中的每個屬性使用一個集合,以防給定的聯繫人記錄應用多個屬性。

您可以將不同的聯繫人記錄存儲到ArrayList中,或者如果您使用.NET 2+或強類型列表。

+0

+1提到實際創建一個對象來表示三個字段。 C#是一種面向對象的語言...爲什麼不使用它呢? – 2011-06-01 18:56:58

0

如果你在.NET 4.0中運行,你應該使用List<T>,儘管如果你願意,你仍然可以用ArrayList來做到這一點。但是你可以利用Tuple到您的類型容易結合起來(雖然我完全同意的建議,以創建一個自定義的類來保存「記錄」):

List<string> phones = new List<string>(); 
    List<string> addresses = new List<string>(); 
    List<string> names = new List<string>(); 

    // fill with data 

    List<Tuple<string,string,string>> results = new List<Tuple<string, string, string>>(); 

    // aggregate with data - if only two you could also use Zip() 
    for (int i = 0; i < names.Count; i++) 
    { 
     results.Add(Tuple.Create(names[i], addresses[i], phones[i])); 
    } 
+0

問題,我如何從Arraylist中獲取信息,因爲它似乎在多類型列表中? – Andy12 2011-06-01 19:37:27