如何使用从数据库中检索的名称创建许多变量

时间:2014-08-28 19:04:18

标签: c# variables dynamic

我有一个数据库表(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变量的值)

2 个答案:

答案 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。