protected override void HandleImpl() { _selectCommand.Execute(); var geometries = _selectCommand.Result.AsEnumerable().Select(r => new Geometry() { X = (double)r["X"], Y = (double)r["Y"], OrderNumber = (int)r["OrderNumber"], PathId = Guid.Parse(r["PathId"].ToString()), PolygonId = Guid.Parse(r["PolygonId"].ToString()) }); Polygons = new List <Polygon>(); foreach (var pol in geometries.GroupBy(g => g.PolygonId).ToList()) { var polygon = new Polygon(); foreach (var pth in pol.GroupBy(g => g.PathId).ToList()) { var path = new Path(pth.OrderBy(p => p.OrderNumber).Select(p => new Point(p.X, p.Y) { OrderNumber = p.OrderNumber }) .ToArray()); polygon.AddPath(path); } Polygons.Add(polygon); } }
public Polygon GetPolygon(List <List <PointD> > paths) { var result = new Polygon(); foreach (var path in paths) { var contour = new Path(path.Select(p => new Point(p.X, p.Y)).ToArray()); result.AddPath(contour); } return(result); }