C# 为列表中的列表指定值
我在列表中有一个列表层次结构,在最底部我分配了一个十进制值。我需要根据层次结构中位于其上方的列表的组合来分配此值。特定列表的每个元素都是一个枚举值,因此一个组合可以是Trees、Buildings、BuildingNumber。另一种是树木、建筑物、建筑价格。为这些组合赋值的最佳方式是什么 我从中指定的值来自任意类。然后,我需要对其中一些值进行一些计算,以指定特定组合中的新值C# 为列表中的列表指定值,c#,C#,我在列表中有一个列表层次结构,在最底部我分配了一个十进制值。我需要根据层次结构中位于其上方的列表的组合来分配此值。特定列表的每个元素都是一个枚举值,因此一个组合可以是Trees、Buildings、BuildingNumber。另一种是树木、建筑物、建筑价格。为这些组合赋值的最佳方式是什么 我从中指定的值来自任意类。然后,我需要对其中一些值进行一些计算,以指定特定组合中的新值 public class Hierarchy1 { public List<Hierarchy2>
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的值决定。我认为我们无法帮助您,因为这是特定于您的应用程序的业务逻辑。您拥有所需的所有输入(三个枚举值),您将决定如何基于这些值计算结果。