gpt4 book ai didi

c# - 使用 linq 或 subsonic 计算距离

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:03 26 4
gpt4 key购买 nike

我从搜索页面获得了这条 MySQL 语句,用户在那里输入邮政编码,它会在输入的邮政编码 15 英里范围内找到最近的股票列表。

 SELECT *  , (
(
ACOS( SIN( "+SENTLNG +" * PI( ) /180 ) * SIN( s_lat * PI( ) /180 ) + COS( " + SENTLNG +" * PI( ) /180 ) * COS( s_lat * PI( ) /180 ) * COS( (
" + SENTLANG + " - s_lng
) * PI( ) /180 ) ) *180 / PI( )
) *60 * 1.1515
) AS distance_miles
FROM new_stockists
WHERE s_lat IS NOT NULL
HAVING distance_miles <15
ORDER BY distance_miles ASC
LIMIT 0 , 15

但现在我正在使用 linq 和 subsonic 并且不知道如何在 linq 或 subsonic 中执行此操作非常感谢您的帮助,也请不要说我必须从地址动态发送,那是页面顶部提到的邮政编码,我调用谷歌,然后从他们那里获取 lng 和 lat,以获得给定的邮政编码.

最佳答案

您可以在 MS SQL 中创建一个存储过程来执行您的查询操作,然后从您的应用中调用该查询。 Linq 确实支持存储过程 - 有点像这样

partial class StockistsDataContext
{
[Function(Name = "dbo.NewStockistsByDistance")]
public ISingleResult<NewStockist> NewStockistsByDistance(
[Parameter(DbType = "Int", Name = "s_lat")] int lat,
[Parameter(DbType = "Int", Name = "s_lng")] int lng)
{
var result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), lat, lng);
return ((ISingleResult<NewStockist>)(result.ReturnValue));
}
}

回退到存储过程有点烦人,但我不认为解析 Queryables 表达式树的 Linq 部分可以检测到相关的数学函数并将它们映射到 SQL。

关于c# - 使用 linq 或 subsonic 计算距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2381175/

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