我有一个数据库表(SQLite)Cats,字段名称,重量,颜色,地址,Lat,Lon等...... 该表包含大约180行。 现在我想把这些猫作为斑点放在他们的纬度/经度的地图上。 我已经定义了一个Cat对象,想要读取表并在运行时使用猫的名称定义180个变量。 读取数据很简单,但我找不到用C#中的cat名称定义180个变量的方法。
将数据库信息读入带有catName,catLat,catLon(以及更多...)列的DataTable dtCats中 然后我做:
nrOfCats = dtCats.Rows.Count;
for (int i = 0; i< nrOfCats; i++)
{
currentCatName = dtCats.Rows[i]["catName"].ToString();
currentCatLat = dtCats.Rows[i]["catLat"].ToString();
currentCatLon = dtCats.Rows[i]["catLon"].ToString();
PointLatLng catLocation = new PointLatLng(Convert.ToDouble(currentCatLat), Convert.ToDouble(currentCatLon));
GmapMarker <the value of currentCatName> = new GMarkerGoogle(catLocation, GMarkerGoogleType.green_pushpin); // this <the value of currentCatName> is the problem
mapOverlayCatMarkers.Markers.Add(<the value of currentCatName>, catLocation);
}
等.... (当然这&#34;&#34;不是变量名,它应该是currentCatName变量的值)
答案 0 :(得分:4)
Theres是一个很好的理由,你不应该声明许多变量。相反,您应该有一个Cat
类来保存所有这些字段,然后使用List<Cat>
来保存从数据库中创建的所有实例。
类似的东西:
List<Cat> data = new List<Cat>();
for (int i = 0; i < TableRows.Count; i++) //Made up for loop,
//use whatever makes sense for your code
{
Cat record = new Cat();
//Populate data
data.Add(record);
}
答案 1 :(得分:0)
mapOverlayCatMarkers.Markers.Add(new GMarkerGoogle(catLocation, GMarkerGoogleType.green_pushpin), catLocation);
对于Add调用,您不需要180个变量,只需要180个对象。如果以后不需要这些注释,你可以像这样匿名创建它们,或者将它们全部分配给循环中的sam变量。
如果您确实需要以后访问它们,可能会有其他人提到的List。