【发布时间】:2020-03-15 17:50:54
【问题描述】:
我正在根据取货地点和送货地点从数据库中筛选结果。
我的数据库包含以下值:
取货地点:San Jose 95002、San Jose 95112、San Jose 95119 等
投递地点:SFO、SJC、卡斯特罗谷
我的搜索字符串是:
皮卡搜索字符串:195, San Jose, California, 95119
删除搜索字符串:56, Castro Valley Boulevard, Castro Valley, California
我正在拆分搜索字符串并在我的 Linq 查询中使用“包含”来寻找最佳匹配,但为了缩短时间,我会在找到匹配后立即中断循环,这会返回不需要的结果,是否存在更好的方法?
取货地址: 195|San Jose|California|95119
目的地地址: 56|Castro Valley Boulevard|Castro Valley|California
String startLocation = PickupAddress.Replace("\"", "").Replace("/", "");
string[] locationList = startLocation.Split('|');
var rateData = new Rate();
foreach (var location in locationList)
{
String startLocationData = location.Trim();
rateData = (from p in _context.Rates
where (p.StartLocation.Contains(startLocationData)
&& p.EndLocation.Contains(DestinationAddress))
&& p.VehicleCategoryID == VehicleID
select p).FirstOrDefault();
if (rateData != null)
{
break;
}
}
if (rateData != null)
{
String amount = Convert.ToString(rateData.Amount).Replace('$', ' ');
String plusRate = Convert.ToString(rateData.PlusRate).Replace('$', ' ');
String fee = Convert.ToString(rateData.QwykrFee).Replace('$', ' ');
Decimal retVal = Convert.ToDecimal(amount) + Convert.ToDecimal(plusRate) + Convert.ToDecimal(fee);
return retVal;
}
else
{
return 0;
}
【问题讨论】:
标签: c# mysql asp.net linq search