我已經在我的SQL Sever的數據庫下表:拼合主/從實體
Tbl_Polygons: PolygonId, PolygonName
Tbl_PolygonPoints: 點名, Fk_PolygonId, 緯度, 經度 我m使用以下方法讀取每個多邊形,然後讀取它的點:
Using context = New myDbEntities()
Dim polygons = (From poly In context.Tbl_Polygons Select Poly).ToList()
polygons.ForEach(Sub(ply)
Dim polyPoint = (From pPoint In Tbl_PolygonPoints Where pPoint.Fk_PolygonId = ply.PolygonId
Select pPoint.Latitude, pPoint.Longitude).ToList()
polyPoint.ForEach(Sub(pPoint)
polygonPoints.Add(New PointLatLng(pPoint.Latitude, pPoint.Longitude))
End Sub)
DrawPolygon(ply,polygonPoints)
polygonPoints.Clear()
End Sub)
End Using
我的桌子上有大約20000個多邊形。 上面提到的代碼需要很長時間才能完全運行。 我試圖壓扁我的數據,然後我可以刪除我的內部ForEach循環。 SelectMany會解決我的問題嗎?如果是的任何建議都讚賞
千恩萬謝
不管怎樣,你可以插入AsNoTracking,Include,還可以選擇Flatten來提高性能。通常AsNoTracking和Include就足夠了。 – bubi
感謝您的回覆,但添加AsNoTracking並沒有標記效果。我只想從tbl_polygons讀取多邊形,然後從tbl_polygonpoints使用linq以有效的方式讀取多邊形 –