来自PHP背景我可以在PHP中执行此操作:
$array[sales_details][uid] = 1;
$array[sales_details][name] = "Name Surname";
$array[sales_details][sales][France][Paris] = 50;
$array[sales_details][sales][France][Lyon] = 25;
$array[sales_details][sales][UK][London] = 75;
$array[sales_details][sales][German][Berlin] = 23;
我怎样才能在C#中做到这一点。我试着看着字典。但即使我将值键定义为对象,它也不会接受"销售"阵列。
var dict = new Dictionary<string, object>();
dict["uid"] = 1;
dict["sales"]["France"]["Paris"] = 50; //error kicks in here
这是否可以用c#
答案 0 :(得分:2)
在我看来,你试图将很多的信息放在数组中,实际上必须是一个对象。
您可以使用jagged arrays解决此问题,但对象更好。
创建一个这样的类:
public class SalesDetails
{
public string Uid {get;set;}
public string Name {get;set;}
public List<SalesItem> SalesItems {get;set;} = new List<SalesItem>();
}
然后自己制定SalesItem
,City
以及所需的所有其他对象。
答案 1 :(得分:0)
如果需要动态属性,请尝试使用ExpandoObject类,如下所示:
dynamic salesDetails = new ExpandoObject();
salesDetails.Uid = 10;
salesDetails.Sales = new ExpandoObject();
salesDetails.Sales.France = new ExpandoObject();
salesDetails.Sales.France.Paris = 50;
salesDetails.Sales.France.Lyon = 25;
salesDetails.Sales.UK = new ExpandoObject();
salesDetails.Sales.UK.London = 75;
salesDetails.Sales.Germany = new ExpandoObject();
salesDetails.Sales.Germany.Berlin = 23;
dynamic london = salesDetails.Sales.UK.London;
重要的是,您必须将内部属性初始化为ExpandoObject。