gpt4 book ai didi

c# - 使用经纬度开头的 Linq Sql 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:33 25 4
gpt4 key购买 nike

我在数据库中有一个纬度列,其值看起来像这样 41.230524 ,使用 HTML5 地理定位我得到更准确的纬度,看起来像这样 41.230524081>/p>

我想在我的数据库中找到最接近从地理定位返回的纬度的行。我在想类似的东西

var myCity = db.zipcodes.Where(x => LatFromGeoCode.StartsWith(x.Latitude)).FirstOrDefault();

问题是数据库中可能有不同的城市以 41.2XXXXX 开头,我不只想要第一个,我想要最接近的匹配

我在想也许是一个循环,首先尝试匹配完整的 LatFromGeo,然后是 -1 字符,然后再试一次,看来一定有更好的方法

最佳答案

找到数学差异最小的那个:

double minDiff = db.zipcodes.Min(x => Math.Abs(x.Latitude - LatFromGeoCode));
var myCity = db.zipcodes.Where(x => Math.Abs(x.Latitude - LatFromGeoCode) == minDiff).FirstOrDefault();

(有一种更好的方法可以用压缩语法来做到这一点,但我对 linq to sql 的了解不够好,无法快速写出来)

如果有人想转换 SQL,这里是 SQL:

SELECT TOP 1 zipcode
FROM zipcodes z
WHERE ABS(z.Latitude - @LatFromGeoCode) = MIN(ABS(z.Latitude - @LatFromGeoCode))

关于c# - 使用经纬度开头的 Linq Sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com