二维数组C#

时间:2012-06-28 18:01:07

标签: c# arraylist indexing

我想要两个数组:

  1. supplierList - 包含我的图表中每个供应商元素的int ID 然后为我在此列表中的每个供应商单独列出
  2. clientList - 包含该确定供应商的客户列表。
  3. 所以我希望例如:

    [12,13,53,165,76]这是供应商的ID和 supplierList[12]供应商12的clientList。

    我试过了:

        public void calculateMetrics (MDG graph)
        {
            ArrayList supplierList = new ArrayList();
            ArrayList clientList = new ArrayList();
    
            foreach (EA.Package package in modelRepository.Models)
            {
                foreach (EA.Package pack in package.Packages)
                {
                    foreach (EA.Connector link in pack.Connectors)
                    {
                        int supplier = link.SupplierID;
                        int client = link.ClientID;
    
                        for(int i=0; i<supplierList.Count; i++)
                        { 
                            if (supplier.Equals(supplierList[i]))
                            {
                                **((ArrayList)clientList((ArrayList)supplierList[i]).Add(client);**
    
    
    
                        supplierList.Add(clientList);
    

    但毫不奇怪它不起作用,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:4)

为什么不创建包含客户端ID列表作为成员变量的供应商对象?这样,您只需要一个List直接迭代,它将清理您的代码。

更具体地说:

供应商对象(类) - 具有ID(int),客户端(对象)

客户端对象(类) - 具有ID,可能还有其他属性。

查找对象创建的语法;你会发现在面向对象的环境中,创建对象真的有帮助!

答案 1 :(得分:0)

您可以将其设计为以下内容,

Class Supplier
{
    int supplierID;
    List<Client> clientListObj;
    //Additional Details
}

Class Client
{
    int clientID;
    //Additional details
}

答案 2 :(得分:0)

如果你熟悉dictionnaries,那就是我会用的。它允许您通过简单的供应商或客户或特定的供应商客户端进行迭代。要清理代码,您可以创建供应商类和客户端类。

这是一个简单的例子

Dictionary<int, List<Client>> SuplierClients = new Dictionary<int, List<string>>();

        foreach (KeyValuePair<int, List<Client>> suplierClient in SuplierClients)
        {
            // your supplier id, could even replace it with a Supplier Object.
            Console.WriteLine(suplierClient.Key);
            Console.WriteLine(suplierClient.Value.ToString());
        }