2012-06-28 304 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()); 
     }