C# 为列表中的列表指定值

C# 为列表中的列表指定值,c#,C#,我在列表中有一个列表层次结构,在最底部我分配了一个十进制值。我需要根据层次结构中位于其上方的列表的组合来分配此值。特定列表的每个元素都是一个枚举值,因此一个组合可以是Trees、Buildings、BuildingNumber。另一种是树木、建筑物、建筑价格。为这些组合赋值的最佳方式是什么 我从中指定的值来自任意类。然后,我需要对其中一些值进行一些计算,以指定特定组合中的新值 public class Hierarchy1 { public List<Hierarchy2>

我在列表中有一个列表层次结构,在最底部我分配了一个十进制值。我需要根据层次结构中位于其上方的列表的组合来分配此值。特定列表的每个元素都是一个枚举值,因此一个组合可以是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;
}
公共类层次结构1
{
公共列表下一个列表;
公共层次结构1枚举值;
}
公共类层次结构2
{
公共列表下一个列表;
公共层次结构2枚举值;
}
公共类层次结构3
{
公共十进制值;
公共层次结构3枚举枚举值;
}
差不多吧。每个枚举都有5-10个值,因此有相当多的组合


Hierarchy1将有一个Hierarchy2的列表。如果Hierarchy2Enum中有10个值,那么该列表中将有10个元素(因此每个枚举基本上只有1个元素)

你的意思是这样的吗

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
}
static void Main(字符串[]args)
{
var list=新列表();
foreach(Enum.GetValues中的Hierarchy1Enum enum1(typeof(Hierarchy1Enum)))
{
var item1=新的层次结构1();
增加(第1项);
item1.EnumValue=enum1;
item1.NextList=新列表();
foreach(Enum.GetValues中的Hierarchy2Enum enum2(typeof(Hierarchy2Enum)))
{
var item2=新的层次结构2();
第1项。下一个列表。添加(第2项);
item2.EnumValue=enum2;
item2.NextList=新列表();
foreach(Enum.GetValues中的Hierarchy3Enum enum3(typeof(Hierarchy3Enum)))
{
var item3=新的层次结构3();
项目2.下一个列表添加(项目3);
item3.EnumValue=enum3;
item3.Value=GetValue(枚举1、枚举2、枚举3);
}
}
}
}
私有静态十进制GetValue(Hierarchy1Enum1、Hierarchy2Enum2、Hierarchy3Enum3)
{
return//从enum1、enum2和enum3计算值
}

您能展示一些示例代码吗?我不明白你的结构你的结构会在代码中得到更好的解释,而不是用英语…我有点困惑你在寻找什么,但根据你的代码,似乎你在尝试实现一个非二叉树结构。这个链接()解释了什么是树数据结构,这个链接()解释了如何在c#中实现一个模板化的非二叉树。是的。我已经走了那么远。但是现在GetValue呢?我有3个枚举的组合,但不知道从那里去哪里。编辑:我的观点是,我知道这个组合,但我不能为每个组合创建1000个if/else语句。你说过你从任意类中获取值。你能发布那个类的源代码吗?它只是一个带有一些双变量的类。基于上面的组合,我将使用这些变量进行一些计算。它可能是这样的:如果Hierarchy3Enum是一个特定的值,将ArbitraryClass.DoubleValue除以20。但是使用哪个DoubleValue将由Hierarchy2Enum的值决定。我认为我们无法帮助您,因为这是特定于您的应用程序的业务逻辑。您拥有所需的所有输入(三个枚举值),您将决定如何基于这些值计算结果。