将值分配给列表中列表中的列表中的列表

时间:2010-10-19 14:59:32

标签: c#

我在列表中有一个列表层次结构,在最底部我正在指定一个十进制值。我需要根据层次结构中位于其上方的列表的组合来分配此值。特定列表的每个元素都是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;
}

这样的事情。 Enums每个都有5-10个值,因此有很多组合。

Hierarchy1将包含Hierarchy2的列表。如果Hierarchy2Enum中有10个值,则该List中将有10个元素(因此每个枚举基本上为1个元素)。

1 个答案:

答案 0 :(得分: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
}