private static Esri.ArcGISRuntime.Geometry.Geometry ReadGeographyMultiLineString(Microsoft.SqlServer.Types.SqlGeography mline, Esri.ArcGISRuntime.Geometry.SpatialReference sr)
 {
     return(new Esri.ArcGISRuntime.Geometry.Polyline(
                Utilities.CountEnumerator(mline.STNumGeometries().Value)
                .Select(i => mline.STGeometryN(i))
                .SelectMany(line => Utilities.CountEnumerator(line.STNumPoints().Value)
                            .Select(i => line.STPointN(i))
                            .Select(p => ReadGeographyPoint(p, sr)))));
 }
        private static Esri.ArcGISRuntime.Geometry.Geometry ReadGeographyMultiPolygon(Microsoft.SqlServer.Types.SqlGeography mpoly, Esri.ArcGISRuntime.Geometry.SpatialReference sr)
        {
            var rings = new List <IEnumerable <Esri.ArcGISRuntime.Geometry.MapPoint> >();

            for (int j = 0; j < mpoly.STNumGeometries().Value; j++)
            {
                var poly       = mpoly.STGeometryN(j);
                var innerRings = Utilities.CountEnumerator(poly.NumRings().Value)
                                 .Select(i => poly.RingN(i))
                                 .Select(t => Utilities.CountEnumerator(t.STNumPoints().Value)
                                         .Select(r => t.STPointN(r))
                                         .Select(p => ReadGeographyPoint(p, sr)));
                rings.AddRange(innerRings);
            }

            return(new Esri.ArcGISRuntime.Geometry.Polygon(rings));
        }