我希望你能指出我正确的方向。我正在研究使用 EF4.1 CF 方法的解决方案。我们还使用存储库模式。SQL Server 是 R2。
我的任务是开发一个用户控件,当用户输入他们的邮政编码并提交它时,从他们输入的邮政编码返回 N 英里半径内的事件列表。
在数据库中,我们存储了所有事件的纬度和经度。我们还确定用户输入的邮政编码的纬度和经度。
显然,如果列表的过滤可以在数据库服务器上而不是在代码中进行,那么对性能会更有好处。
我在 C# 中有一个方法来处理所有的计算。我在 SQL 中也有等价物(如果我要编写 UDF)。
不过,我的问题是,如何编写一个 LINQ 表达式,该表达式将映射到带有 Math.Sin、Math.Cos 之类的 SQL?
一个(非常)简单的代码示例是:
返回 p => p.Latitude == Math.Sin(0.90678234688337252436989061980805); <<< 显然在生产代码中,会有变量,这个表达式会比这个例子更重要。
执行此代码块时,我在运行时得到的只是以下异常:
“LINQ to Entities 无法识别方法 'Double Sin(Double)' 方法,并且此方法无法转换为存储表达式。”
感谢您的帮助和建议。
JC