2011-06-01 82 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