private void InsertData(DataTable dt)
    {
        int UpdateCount = 0, InsertCount = 0;

        try
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                #region Value Initialization

                CountryName = dt.Rows[i][CountryNameColumn].ToString().Trim();
                StateName   = dt.Rows[i][StateNameColumn].ToString().Trim();
                CityName    = dt.Rows[i][CityNameColumn].ToString().Trim();

                #endregion

                int CountryId = new Country()
                {
                    eStatus = (int)eStatus.Active, CountryName = CountryName.ToLower()
                }.SelectList <Country>()[0].CountryId.Value;

                int StateId = 0;
                if (!StateName.zIsNullOrEmpty())
                {
                    StateId = new State()
                    {
                        CountryId = CountryId, StateName = StateName, eStatus = (int)eStatus.Active
                    }
                }
                .SelectList <State>()[0].StateId.Value;

                DataTable dtCity = new Query()
                {
                    CountryId  = CountryId,
                    StateId    = StateId,
                    CityName   = CityName.zFirstCharToUpper(),
                    eStatusNot = (int)eStatus.Delete
                }.Select(eSP.qry_City);

                var objCity = new City()
                {
                    CityId   = dtCity.Rows.Count > 0 ? dtCity.Rows[0][CS.CityId].zToInt() : (int?)null,
                    StateId  = StateId,
                    CityName = CityName,
                };

                if (objCity.CityId.HasValue)
                {
                    objCity.Update();
                    UpdateCount++;
                }
                else
                {
                    objCity.eStatus = (int)eStatus.Active;
                    objCity.Insert();
                    InsertCount++;
                }
            }