private WindowZoneSearchResult findClosestZoneRectangleToWindow(RECT windowPosition, RECT workingArea, WindowZone zone) { IEnumerable <Rect> proportionalZoneRectangles = getProportionalRectanglesForZone(zone); IEnumerable <WindowZoneSearchResult> windowZoneSearchResults = proportionalZoneRectangles.Select((proportionalZoneRectangle, zoneIndex) => { WindowZoneSearchResult result = new() { proportionalZoneRectangle = proportionalZoneRectangle, actualZoneRectPosition = windowResizer.getRelativePosition(convertProportionalRectangleToActualRectangle(proportionalZoneRectangle, workingArea), workingArea.Location), zone = zone, zoneRectangleIndex = zoneIndex }; result.distance = windowResizer.getRectangleDistance(result.actualZoneRectPosition, windowPosition); return(result); }); return(windowZoneSearchResults.MinBy(result => result.distance).First()); }