2014-08-28 88 views
0

我有一個數據庫表(SQLite的)檢索與貓的字段名稱,重量,顏色,地址,緯度,經度和更..... 表名的變數包含一些180行。 現在我想把這些貓放在地圖上作爲他們經緯度的點。 我已經定義了一個Cat對象,並且想要在運行時讀取表並定義180個帶有貓名稱的變量。 讀取數據很簡單,但我找不到在C#中用貓的名字定義180個變量的方法。如何創建與數據庫中


的數據庫信息被讀入一個DataTable dtCats與列catName,catLat,catLon(更多...) 後來我做:

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

等.... (當然這個「」不是變量名,它應該是currentCatName變量的值)

+0

你爲什麼要創建180個變量,而不是OS將它們存儲在集合中? – 2014-08-28 19:06:13

+0

這種方法從根本上戰鬥你在工作語言 – grin0048 2014-08-28 19:06:49

+0

邊注:請不要加感謝信,署名和「搜索了很多」給你的職位。如果你想展示你的研究成果 - 把你嘗試過的代碼或包含你找到的問題/文章的鏈接用一行描述爲什麼不適合你的案例。 – 2014-08-28 19:16:48

回答

4

這個理由很好,你的不應該聲明變量很多。相反,您應該有一個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); 
} 
+0

謝謝,但如果地圖庫(Gmap.net)需要180個顯式變量名稱作爲地圖標記呢? 詹妮弗 – 2014-08-28 19:14:44

+0

@JenniferBanks你能顯示代碼的樣子添加標記? – MikeH 2014-08-28 20:43:36

+0

@JenniferBanks如果你的庫爲其標記使用了實際變量名(表明它使用了反射),那麼你可能不應該使用該庫。無論如何,一些代碼會很好。 – BradleyDotNET 2014-08-28 21:28:32

0
mapOverlayCatMarkers.Markers.Add(new GMarkerGoogle(catLocation, GMarkerGoogleType.green_pushpin), catLocation); 

你不需要180個變量添加通話,只是180級的對象。如果您稍後不需要這些註釋,則可以像這樣匿名創建它們,或者將它們全部分配給循環中的sam變量。
如果您確實需要稍後訪問它們,則可以使用其他人提到的列表。