BAL.Manager.DistrictManager.searchDistricts C# (CSharp) Method

searchDistricts() public method

public searchDistricts ( string parameter ) : IEnumerable
parameter string
return IEnumerable
        public IEnumerable<DistrictDTO> searchDistricts(string parameter)
        {
            var result = uOW.DistrictRepo.All.Where(s => s.Deleted == false & (s.Name.StartsWith(parameter) || s.Name.Contains(parameter))).Include(c => c.Coordinates).ToList();
            var additional = new List<District>();
            foreach (var district in result)
            {
                var parentId = district.ParentId;
                var children = GetAllChildren(district.Id);
                foreach (var child in children)
                {
                    if (!additional.Contains(child) && !result.Contains(child))
                    {
                        additional.Add(child);
                    }
                }
                while (parentId != null)
                {
                    var parent = uOW.DistrictRepo.All.Where(d => d.Id == parentId && d.Deleted==false).Include(d=>d.Coordinates).FirstOrDefault();
                    parentId = parent.ParentId;
                    if (!additional.Contains(parent) && !result.Contains(parent))
                    {
                        additional.Add(parent);
                    }
                }
            }
            result.AddRange(additional);
            SortCoordinates(result);
            return Mapper.Map<IEnumerable<DistrictDTO>>(result);
        }