Как сопоставить список областей с «адресом» (строкой) и получить область, которая присутствует и в списке, и в строке Asp. net core - PullRequest
0 голосов
/ 03 марта 2020

Привет всем, у меня есть строка, содержащая Адрес и список Области из базы данных, я хочу получить область из адрес строки, которая присутствует в обоих список областей и адреса string.how, как я могу сделать это без зацикливания, потому что зацикливание займет много времени. Любое решение, пожалуйста, с помощью регулярного выражения или любого другого подхода.

  var data = _context.OrderDetails.Where(c => c.ConsignmentId == cId)
            .Select(c => new {address = c.DeliveryAddress, cityId = c.CityId}).ToList();
        string EncryptedConsId = _customEncryptionDecryption.Encode(cId);

        Regex re = new Regex(@"^(.*?(\bkarachi\b)[^$]*)$");
        MatchCollection cityA = re.Matches(data[0].address.ToLower());
        if (cityA.Count != 0)
        {
            var cityNameA = cityA[0].Groups[2];
            if (cityNameA.Value == "karachi")
            {
                var areasForCityA = _context.Areas.Where(a => a.CityId == 1).ToList();
            }
        }

1 Ответ

0 голосов
/ 04 марта 2020

я решил эту проблему, спасибо всем вам большое

 var areas = _context.Areas.Where(a => a.CityId == data[0].cityId).ToList();
        for (int i = 0; i < areas.Count; i++)
        {
            var result = data[0].address.ToLower().Contains(areas[i].Title.ToLower());
            if (result)
            {
                AreaId = areas[i].Id;
                CityId = data[0].cityId;
                var order = _context.OrderDetails.Where(o => o.ConsignmentId == cId).SingleOrDefault();
                order.AreaId = AreaId;
                _context.SaveChanges();
                break;
            }
        }
...