2010-10-19 34 views
0

我在列表內有一個列表層次結構,在最底部我分配一個十進制值。我需要根據層次結構上方的列表組合來分配此值。特定列表中的每個元素都是一個Enum值,因此一個組合可以是Trees,Buildings,BuildingNumber。另有樹木,建築,建築價格。將這些組合賦值的最佳方式是什麼?爲列表內的列表內的列表分配值

我從分配的值來自任意類。然後,我需要對這些值中的一些值進行一些計算,以便以特定組合方式分配新值。

public class Hierarchy1 
{ 
    public List<Hierarchy2> NextList; 
    public Hierarchy1Enum EnumValue; 
} 

public class Hierarchy2 
{ 
    public List<Hierarchy3> NextList; 
    public Hierarchy2Enum EnumValue; 
} 

public class Hierarchy3 
{ 
    public decimal Value; 
    public Hierarchy3Enum EnumValue; 
} 

就是這樣的。這些枚舉每個都有5-10個值,所以有很多組合。

Hierarchy1將有一個Hierarchy2的列表。如果Hierarchy2Enum中有10個值,則該列表中將有10個元素(因此每個枚舉基本上有1個元素)。

+2

你能舉一些例子代碼嗎?我沒有得到你的結構 – Onkelborg 2010-10-19 15:02:43

+0

你的結構將在代碼中更好地解釋,而不是英語... – 2010-10-19 15:10:19

+0

我有點困惑你要找的東西,但根據你的代碼,它看起來像你試圖實現一個非二叉樹結構。這個鏈接(http://bit.ly/62Vx9I)解釋了什麼是樹數據結構,這個鏈接(http://bit.ly/10YfuV)解釋瞭如何在c#中實現一個模板化的非二叉樹。 – 2010-10-19 15:40:32

回答

0

你的意思是這樣的嗎?

static void Main(string[] args) 
{ 
    var list = new List<Hierarchy1>(); 

    foreach (Hierarchy1Enum enum1 in Enum.GetValues(typeof(Hierarchy1Enum))) 
    { 
     var item1 = new Hierarchy1(); 

     list.Add(item1); 

     item1.EnumValue = enum1; 
     item1.NextList = new List<Hierarchy2>(); 

     foreach (Hierarchy2Enum enum2 in Enum.GetValues(typeof(Hierarchy2Enum))) 
     { 
      var item2 = new Hierarchy2(); 

      item1.NextList.Add(item2); 

      item2.EnumValue = enum2; 
      item2.NextList = new List<Hierarchy3>(); 

      foreach (Hierarchy3Enum enum3 in Enum.GetValues(typeof(Hierarchy3Enum))) 
      { 
       var item3 = new Hierarchy3(); 

       item2.NextList.Add(item3); 

       item3.EnumValue = enum3; 

       item3.Value = GetValue(enum1, enum2, enum3); 
      } 
     } 
    } 
} 

private static decimal GetValue(Hierarchy1Enum enum1, Hierarchy2Enum enum2, Hierarchy3Enum enum3) 
{ 
    return // Calculate your value from enum1, enum2 and enum3 
} 
+0

是的。我有這麼多。但是現在GetValue怎麼樣?我有3個枚舉的組合,但不知道從哪裏去。編輯:我的觀點是,我知道組合,但我不能爲每個組合創建1000條if/else語句。 – Harry 2010-10-19 15:29:47

+0

你說你從任意一個類中獲得了值。你可以發佈該課程的來源嗎? – 2010-10-19 15:31:12

+0

這只是一個雙變量的類。我會根據上述組合使用這些變量進行一些計算。 – Harry 2010-10-19 15:32:58