internal static IEnumerable<FindEndPoint> CloseBldLevelFound(IEnumerable<FindEndPoint> parents, Location loc, string zip) { var ret = new List<FindEndPoint>(); var blds = new List<ObjGeo>(); parents = parents.ToList(); if (parents.Count() > 0) blds = DbHelper.CreateCommand("select * from tblKLADR where GeoType=@lvl5 and ParentCode=@code") .AddParameter("@lvl5", GeoLevelType.Building) .ExpandParameterToList("@code", parents.Select(p => p.FoundGeo.Code)).Select<ObjGeo>().ToList(); if (!string.IsNullOrEmpty(zip)) { foreach (var bldGeo in blds.Where(bld => bld.Index == zip)) { var bldRating = loc.BuildingValidate(bldGeo); var point = parents.First(p => p.FoundGeo.Code == bldGeo.ParentCode); var newPoint = new FindEndPoint() { FoundGeo = bldGeo, ParentEndPoint = point, ResolveRating = point.ResolveRating | bldRating }; ret.Add(newPoint); } } else { foreach (var bldGeo in blds.Where(bld => loc.BuildingValidate(bld) == ResolveRating.Clear)) { var point = parents.First(p => p.FoundGeo.Code == bldGeo.ParentCode); var newPoint = new FindEndPoint() { FoundGeo = bldGeo, ParentEndPoint = point, ResolveRating = point.ResolveRating }; ret.Add(newPoint); } } return ret; }