2012-06-28 236 views
3

我想有两个数组:二维阵列C#

  1. supplierList - 包含每个供应商元件,我在我的图表 ,然后,我已在此列表中的单独的每一个供应商的整型ID列表
  2. clientList - 包含该确定供应商的客户列表。

,所以我想例如有:

[12,13,53,165,76]是供应商的识别码与 supplierList[12]供应商的客户端列表12

我与尝试:

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); 

但没有惊喜它不起作用,但我不知道该怎么做。

+1

4嵌套维权水平!!重构的明确候选人。我为评论道歉,与您的问题无关。我观察到的东西。 – AlwaysAProgrammer

+0

为什么在引入泛型集合七年后仍然使用'ArrayList'?如果你仍然使用.NET 1.1,那么这可能会改变答案... –

回答

0

你可以把它设计如下,

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

Class Client 
{ 
    int clientID; 
    //Additional details 
} 
4

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

更具体地:

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

Client对象(类) - 具有ID,或许其它性质。

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

+0

因此,我创建一个类供应商,创建包含客户端列表的对象?你是这个意思吗? – Defi

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()); 
     }