请帮帮我。
我有一个JavaScript代码。
var regiondb = new Object()
regiondb["africa"] = [{value:"1", text:"Cairo"},
{value:"2", text:"Casablanka"},
{value:"3", text:"Tunis"},
{value:"4", text:"Maputu"}];
regiondb["asia"] = [{value:"1", text:"Baku"},
{value:"2", text:"Seul"},
{value:"3", text:"Tokio"},
{value:"4", text:"Ulan-Batar"},
{value:"5", text:"Stambul"}];
如何将此代码转换为C#?
我理解这是regiondb["asia"] = [{value:"1", text:"Baku"},
数组吗?
答案 0 :(得分:2)
var regiondb = new Dictionary<String, Dictionary<String,String>>();
regiondb.Add("africa", new Dictionary<String,String> {
{ "1", "Cairo" },
{ "2", "Casablanka" },
{ "3", "Tunis" },
{ "4", "Maputu" },
});
// Same with asia
然后你可以访问它:
// regiondb.Keys = ["africa", "asia"]
// regiondb["africa"].Keys = ["1", "2", "3", "4"]
// regiondb["africa"]["1"] = Cairo
这是一个在C#中使用标准对象的非常简单的例子。如果您想要1:1的翻译,您可能需要查看像Json2CSharp这样的网站,它将创建一个对象结构(使用value
和text
等属性来访问)。
使用实际对象的替代方法:
class RegionDB : IEnumerable<String>, IEnumerable
{
private IDictionary<String, IEnumerable<City>> continents = new Dictionary<String, IEnumerable<City>>();
public IEnumerable<String> Continents
{
get { return this.continents.Keys; }
}
public IEnumerable<City> this[String continent]
{
get
{
return this.continents.ContainsKey(continent)
? this.continents[continent]
: Enumerable.Empty<City>();
}
set
{
this.continents[continent] = value ?? Enumerable.Empty<City>();
}
}
public RegionDB()
{
}
#region IEnumerable<String>
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<String>)this).GetEnumerator();
}
IEnumerator<String> IEnumerable<String>.GetEnumerator()
{
return this.continents.Keys.GetEnumerator();
}
#endregion
}
class City
{
public String Text { get; set; }
public String Value { get; set; }
public City(String text, String value)
{
this.Text = text;
this.Value = value;
}
}
用法:
var regiondb = new RegionDB();
regiondb["africa"] = new[]{
new City("Cairo", "1"),
new City("Casablanka", "2"),
new City("Tunis", "3"),
new City("Maputu", "4")
};
regiondb["asia"] = new[]{
new City("Baku", "1"),
new City("Seul", "2"),
new City("Tokio", "3"),
new City("Ulan-Batar", "4"),
new City("Stambul", "5")
};
// List data
foreach (var continent in regiondb) /* or: */ //foreach (var continent in regiondb.Continents)
{
Console.WriteLine(continent);
// List cities within
foreach (var city in regiondb[continent])
{
Console.WriteLine("\tvalue = {0}, text = {1}", city.Value, city.Text);
}
}
输出:
africa
value = 1, text = Cairo
value = 2, text = Casablanka
value = 3, text = Tunis
value = 4, text = Maputu
asia
value = 1, text = Baku
value = 2, text = Seul
value = 3, text = Tokio
value = 4, text = Ulan-Batar
value = 5, text = Stambul
答案 1 :(得分:1)
所以,它是这样的:
var regiondb = new Dictionary<String, List<Pair>>(); // where Pair is an object that has a Text and Value property
var africaList = new List<Pair>(){
new Pair { Text = "Cairo", Value = "1" },
new Pair { Text = "Casablanka", Value = "2"} // and so on
};
regiondb.Add("africa", africaList);
答案 2 :(得分:1)
这可能是C#中最接近的东西:
var regiondb = new
{
africa = new[]
{
new
{
value = "1",
text = "Cairo"
},
new
{
value = "2",
text = "Casablanka"
}
//...
},
asia = new[]
{
new
{
value = "1",
text = "Baku"
},
new
{
value = "2",
text = "Seul"
}
//...
}
};
您可以按如下方式访问其中的数据:
regiondb.africa [0] .text //开罗