コード例 #1
0
ファイル: AddressParser.cs プロジェクト: koder05/fogel-ba
        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;
        }