首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将复杂查询(COS,SIN,RADIANS,ACOS)重写为Entity-to-SQL

将复杂查询(COS,SIN,RADIANS,ACOS)重写为Entity-to-SQL
EN

Stack Overflow用户
提问于 2011-06-04 05:43:35
回答 1查看 796关注 0票数 1

下面的存储过程检索给定纬度和经度的最近500个地址。许多应用程序都使用它,它也是有用的查询之一。

可以用Entity- to -SQL重写吗?如果是这样的话,你能给我指出正确的方向吗(我对实体到SQL并不陌生)?提前谢谢。

代码语言:javascript
复制
DECLARE @CntXAxis FLOAT 
DECLARE @CntYAxis FLOAT 
DECLARE @CntZAxis FLOAT 


SET @CntXAxis = COS(RADIANS(-118.4104684)) * COS(RADIANS(34.1030032)) 
SET @CntYAxis = COS(RADIANS(-118.4104684)) * SIN(RADIANS(34.1030032)) 
SET @CntZAxis = SIN(RADIANS(-118.4104684)) 

SELECT 
        500 *,
    ProxDistance = 3961 * ACOS( dbo.XAxis(LAT, LONG)*@CntXAxis + dbo.YAxis(LAT, LONG)*@CntYAxis + dbo.ZAxis(LAT)*@CntZAxis) 
FROM 
    tbl_ProviderLocation 
WHERE 
    (3961 * ACOS( dbo.XAxis(LAT, LONG)*@CntXAxis + dbo.YAxis(LAT, LONG)*@CntYAxis + dbo.ZAxis(LAT)*@CntZAxis) <= 10) 
ORDER BY 
    ProxDistance ASC
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-04 20:50:13

如果您使用的是Ms Sql Server,则可以将SqlClient函数与实体SQL一起使用

http://msdn.microsoft.com/en-us/library/bb399586.aspx

根据this的说法,这些函数也可用于LINQ查询。我找不到一个例子,但它看起来很简单。

代码语言:javascript
复制
var qry = from r in mytable
select new {Acos = SqlFunctions.ACos(r.mycloumn)};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6232971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档