У меня есть следующий запрос, который возвращает новый набор объектов:
_MapData.features = (from gs in QBEntities.GeoStates
select new MapDataRecord()
{
properties = new MapDataRecordProperties()
{
GEOID = gs.GEOID,
GEO_NAME = gs.GEO_NAME
},
geometry = SetGeoJsonGeography(gs.GEO_OBJECT.SpatialTypeName, gs.JSON_GEOMETRY)
}
).ToList();
Однако у него есть проблема с SetGeoJsonGeography (), я получаю сообщение об ошибке: «LINQ to Entities не распознает метод'
Перед созданием геометрии необходимо выяснить тип геометрии, чтобы можно было создать правильный тип массива.
Метод:
private MapDataGeometry SetGeoJsonGeography(string GeographyType, string GeoJsonGeographyString)
{
if (GeographyType.Equals("polygon", StringComparison.CurrentCultureIgnoreCase))
{
return new MapDataPolygon() { type = GeographyType, coordinates = Newtonsoft.Json.JsonConvert.DeserializeObject<double[][][]>(GeoJsonGeographyString) };
}
else if (GeographyType.Equals("multipolygon", StringComparison.CurrentCultureIgnoreCase))
{
return new MapDataMultiPolygon() { type = GeographyType, coordinates = Newtonsoft.Json.JsonConvert.DeserializeObject<double[][][][]>(GeoJsonGeographyString) };
}
else
{
return null;
}
}
Вотклассы:
[Serializable]
public class MapDataGeometry
{
public string type { get; set; }
}
[Serializable]
public class MapDataPolygon : MapDataGeometry
{
public double[][][] coordinates { get; set; }
}
[Serializable]
public class MapDataMultiPolygon : MapDataGeometry
{
public double[][][][] coordinates { get; set; }
}
Как мне этого добиться?