2016-01-19 184 views
2

從PHP背景的,我可以在PHP中做到這一點:多維關聯數組C#

$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#

+1

Jagged數組可能是一種方法,或者您可以使用類創建一個類型化的對象結構,它代表了這一點。如果它對我很重要,我總是會創建一個對象結構。 – Ben

+0

http://stackoverflow.com/questions/27095470/multidimensional-associative-array-in-c-sharp – Aristos

回答

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>(); 
} 

然後制定出自己SalesItemCity和其他物品需要。

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。