【发布时间】:2020-03-03 06:05:09
【问题描述】:
大家好,我有一个包含 Address 的字符串和来自 Db 的 Areas 列表,我想从 address 字符串中获取该区域出现在 areas 和 address 字符串列表中。我如何在不循环的情况下执行此操作,因为通过循环将花费很多时间。任何解决方案请通过正则表达式或任何其他方法。
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