Пример #1
0
        protected static AddressInfo FillAddressInfoFromCSV(string path, string cityFilter)
        {
            var content = File.ReadAllLines(path).ToList()
                          .OrderBy(line => line) //sorted by City name ascending, then District name ascending
                          .ToArray();
            var length = content.Length;

            var addressInfo = new AddressInfo();

            for (var i = 1; i < length; i++)
            {
                var lineItems    = content[i].Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                var cityName     = lineItems[0];
                var cityCode     = lineItems[1];
                var districtName = lineItems[2];
                var zipCode      = lineItems[3];

                if (!string.IsNullOrEmpty(cityFilter))
                {
                    var loweredFilter   = cityFilter.ToLower(new CultureInfo("tr-TR"));
                    var loweredCityName = cityName.ToLower(new CultureInfo("tr-TR"));
                    if (loweredCityName != loweredFilter)
                    {
                        continue;
                    }
                }

                if (addressInfo.City.Exists(x => x.Name == cityName))
                {
                    var districts = addressInfo.City.First(x => x.Name == cityName).District;
                    if (districts.Exists(x => x.Name == districtName))
                    {
                        var zips = districts.First(x => x.Name == districtName).Zip;
                        if (!zips.Exists(x => x.Code == zipCode))
                        {
                            zips.Add(new AddressInfoCityDistrictZip {
                                Code = zipCode
                            });
                        }
                    }
                    else
                    {
                        var aicd = new AddressInfoCityDistrict {
                            Name = districtName
                        };
                        aicd.Zip.Add(new AddressInfoCityDistrictZip {
                            Code = zipCode
                        });
                        districts.Add(aicd);
                    }
                }
                else
                {
                    var aic = new AddressInfoCity {
                        Name = cityName, Code = cityCode
                    };
                    var aicd = new AddressInfoCityDistrict {
                        Name = districtName
                    };
                    aicd.Zip.Add(new AddressInfoCityDistrictZip {
                        Code = zipCode
                    });

                    aic.District.Add(aicd);
                    addressInfo.City.Add(aic);
                }
            }

            return(addressInfo);
        }
Пример #2
0
        public AddressInfo ObjConvertCsvToXml(List <AddressInfoCsv> aiCsvList)
        {
            AddressInfo ai = new AddressInfo();

            foreach (AddressInfoCsv aic in aiCsvList)
            {
                //ai.City?.Where(i => i.name == aic.CityName && i.code == aic.CityCode) == null
                if (ai.City == null || Array.Exists(ai.City, i => i.name == aic.CityName && i.code == aic.CityCode) == false)
                {
                    List <AddressInfoCity> lc = new List <AddressInfoCity>();
                    if (ai.City != null)
                    {
                        lc.AddRange(ai.City.ToList());
                    }
                    AddressInfoCity c = new AddressInfoCity();
                    c.name     = aic.CityName;
                    c.code     = aic.CityCode;
                    c.District = new AddressInfoCityDistrict[] { };

                    List <AddressInfoCityDistrict> ld = new List <AddressInfoCityDistrict>();
                    if (c.District != null)
                    {
                        ld.AddRange(c.District.ToList());
                    }
                    AddressInfoCityDistrict d = new AddressInfoCityDistrict();
                    d.name = aic.DistrictName;
                    d.Zip  = new AddressInfoCityDistrictZip[] { };

                    List <AddressInfoCityDistrictZip> lz = new List <AddressInfoCityDistrictZip>();
                    if (d.Zip != null)
                    {
                        lz.AddRange(d.Zip.ToList());
                    }
                    AddressInfoCityDistrictZip z = new AddressInfoCityDistrictZip();
                    z.code = aic.CityCode;

                    lz.Add(z);
                    d.Zip = lz.ToArray();

                    ld.Add(d);
                    c.District = ld.ToArray();

                    lc.Add(c);
                    ai.City = lc.ToArray();
                }
                else
                {
                    foreach (AddressInfoCity aicv in ai.City)
                    {
                        if (aicv.name == aic.CityName && aicv.code == aic.CityCode)
                        {
                            if (aicv.District == null || Array.Exists(aicv.District, l => l.name == aic.DistrictName) == false)
                            {
                                List <AddressInfoCityDistrict> ld = new List <AddressInfoCityDistrict>();
                                if (aicv.District != null)
                                {
                                    ld.AddRange(aicv.District.ToList());
                                }
                                AddressInfoCityDistrict d = new AddressInfoCityDistrict();
                                d.name = aic.DistrictName;
                                d.Zip  = new AddressInfoCityDistrictZip[] { };

                                List <AddressInfoCityDistrictZip> lz = new List <AddressInfoCityDistrictZip>();
                                if (d.Zip != null)
                                {
                                    lz.AddRange(d.Zip.ToList());
                                }
                                AddressInfoCityDistrictZip z = new AddressInfoCityDistrictZip();
                                z.code = aic.ZipCode;

                                lz.Add(z);
                                d.Zip = lz.ToArray();

                                ld.Add(d);
                                aicv.District = ld.ToArray();
                            }
                            else
                            {
                                foreach (AddressInfoCityDistrict aicdv in aicv.District)
                                {
                                    if (aicdv.name == aic.DistrictName)
                                    {
                                        if (aicdv.Zip == null || Array.Exists(aicdv.Zip, m => m.code == aic.ZipCode) == false)
                                        {
                                            List <AddressInfoCityDistrictZip> lz = new List <AddressInfoCityDistrictZip>();
                                            if (aicdv.Zip != null)
                                            {
                                                lz.AddRange(aicdv.Zip.ToList());
                                            }
                                            AddressInfoCityDistrictZip z = new AddressInfoCityDistrictZip {
                                            };
                                            z.code = aic.ZipCode;
                                            lz.Add(z);

                                            aicdv.Zip = lz.ToArray();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(ai);
        }
Пример #3
0
        public AddressInfo DeSerialize(string filename)
        {
            AddressInfo ai = new AddressInfo();

            FileStream fs = new FileStream(filename, FileMode.Open);

            using (StreamReader reader = new StreamReader(fs))
            {
                string line;

                while ((line = reader.ReadLine()) != null)
                {
                    String[] aic = line.Split(',');



                    //ai.City?.Where(i => i.name == aic.CityName && i.code == aic.CityCode) == null
                    if (ai.City == null || Array.Exists(ai.City, i => i.name == aic[0] && i.code == aic[1]) == false)
                    {
                        List <AddressInfoCity> lc = new List <AddressInfoCity>();
                        if (ai.City != null)
                        {
                            lc.AddRange(ai.City.ToList());
                        }
                        AddressInfoCity c = new AddressInfoCity();
                        c.name     = aic[0];
                        c.code     = aic[1];
                        c.District = new AddressInfoCityDistrict[] { };

                        List <AddressInfoCityDistrict> ld = new List <AddressInfoCityDistrict>();
                        if (c.District != null)
                        {
                            ld.AddRange(c.District.ToList());
                        }
                        AddressInfoCityDistrict d = new AddressInfoCityDistrict();
                        d.name = aic[2];
                        d.Zip  = new AddressInfoCityDistrictZip[] { };

                        List <AddressInfoCityDistrictZip> lz = new List <AddressInfoCityDistrictZip>();
                        if (d.Zip != null)
                        {
                            lz.AddRange(d.Zip.ToList());
                        }
                        AddressInfoCityDistrictZip z = new AddressInfoCityDistrictZip();
                        z.code = aic[3];

                        lz.Add(z);
                        d.Zip = lz.ToArray();

                        ld.Add(d);
                        c.District = ld.ToArray();

                        lc.Add(c);
                        ai.City = lc.ToArray();
                    }
                    else
                    {
                        foreach (AddressInfoCity aicv in ai.City)
                        {
                            if (aicv.name == aic[0] && aicv.code == aic[1])
                            {
                                if (aicv.District == null || Array.Exists(aicv.District, l => l.name == aic[2]) == false)
                                {
                                    List <AddressInfoCityDistrict> ld = new List <AddressInfoCityDistrict>();
                                    if (aicv.District != null)
                                    {
                                        ld.AddRange(aicv.District.ToList());
                                    }
                                    AddressInfoCityDistrict d = new AddressInfoCityDistrict();
                                    d.name = aic[2];
                                    d.Zip  = new AddressInfoCityDistrictZip[] { };

                                    List <AddressInfoCityDistrictZip> lz = new List <AddressInfoCityDistrictZip>();
                                    if (d.Zip != null)
                                    {
                                        lz.AddRange(d.Zip.ToList());
                                    }
                                    AddressInfoCityDistrictZip z = new AddressInfoCityDistrictZip();
                                    z.code = aic[3];

                                    lz.Add(z);
                                    d.Zip = lz.ToArray();

                                    ld.Add(d);
                                    aicv.District = ld.ToArray();
                                }
                                else
                                {
                                    foreach (AddressInfoCityDistrict aicdv in aicv.District)
                                    {
                                        if (aicdv.name == aic[2])
                                        {
                                            if (aicdv.Zip == null || Array.Exists(aicdv.Zip, m => m.code == aic[3]) == false)
                                            {
                                                List <AddressInfoCityDistrictZip> lz = new List <AddressInfoCityDistrictZip>();
                                                if (aicdv.Zip != null)
                                                {
                                                    lz.AddRange(aicdv.Zip.ToList());
                                                }
                                                AddressInfoCityDistrictZip z = new AddressInfoCityDistrictZip {
                                                };
                                                z.code = aic[3];
                                                lz.Add(z);

                                                aicdv.Zip = lz.ToArray();
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(ai);
        }