【问题标题】:How to match list of areas to a "address"(string) and get the area which is present in both list and string Asp.net core如何将区域列表与“地址”(字符串)匹配并获取列表和字符串中都存在的区域 Asp.net core
【发布时间】:2020-03-03 06:05:09
【问题描述】:

大家好,我有一个包含 Address 的字符串和来自 Db 的 Areas 列表,我想从 address 字符串中获取该区域出现在 areasaddress 字符串列表中。我如何在不循环的情况下执行此操作,因为通过循环将花费很多时间。任何解决方案请通过正则表达式或任何其他方法。

  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();
            }
        }

【问题讨论】:

  • 您好,您可以展示一个示例、伪代码或类似内容吗?还;为什么你认为正则表达式比循环快?你能用O表达你最坏的情况吗?
  • 我在一个列表中几乎有 290 或 294 个区域,这就是为什么我认为这需要时间但它是一次性活动,如果我错了,请引导我走向正确的道路。
  • 请向我们展示一个地址和区域的示例,您的输入是什么以及预期的输出是什么
  • 我已经更新了我的问题,请检查我在获取区域后附加了一个代码示例,我想在区域列表和地址字符串之间进行预匹配
  • 如何正确规范化您的数据,然后通过连接来完成?

标签: c# asp.net asp.net-core asp.net-core-webapi lis


【解决方案1】:

我已经解决了我的问题,谢谢大家非常感谢

 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;
            }
        }

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2021-11-30
    • 2013-06-18
    • 1970-01-01
    • 2019-05-10
    • 2013-03-07
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多