this is because the default is using INTERSECTS instead of CONTAINS
private void QueryTaskService(Selection sel, ESRI.ArcGIS.Client.Geometry.Geometry geometry) { string serviceURL; if (GravityMain.Target == PipeQueryBuilder.AddIns.MyDatabaseService.Table.SSGRAVITYMAIN_MV) serviceURL = "http://mkgistempd01/ArcGIS/rest/services/RIVER/Sanitary_map/MapServer/62"; else if (GravityMain.Target == PipeQueryBuilder.AddIns.MyDatabaseService.Table.SSPRESSURIZEDMAIN_MV) serviceURL = "http://mkgistempd01/ArcGIS/rest/services/RIVER/Sanitary_map/MapServer/64"; else if (GravityMain.Target == PipeQueryBuilder.AddIns.MyDatabaseService.Table.SWGRAVITYMAIN_MV) serviceURL = "http://mkgistempd01/ArcGIS/rest/services/RIVER/Storm_map/MapServer/62"; else serviceURL = "http://mkgistempd01/ArcGIS/rest/services/RIVER/Storm_map/MapServer/63"; QueryTask queryTask = new QueryTask(serviceURL); queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted; queryTask.Failed += QueryTask_Failed; Query query = new ESRI.ArcGIS.Client.Tasks.Query(); query.OutFields.Add("*"); query.Geometry = geometry; query.SpatialRelationship = SpatialRelationship.esriSpatialRelIntersects; query.Where = form.constructWHERECLAUSE(sel); // Return geometry with result features query.ReturnGeometry = true; query.OutSpatialReference = MapApplication.Current.Map.SpatialReference; queryTask.ExecuteAsync(query, GravityMain._gMain.BoundaryGeometries[geometry]); }