事件在特定日期的某个位置发生,但每个事件可能会在不同日期的相同或不同位置重复。我创建了一个 Entity Framework 模型,并希望用两个日期之间发生的相关事件填充它,并按距指定位置的位置距离排序。
因此我有以下表格:
事件(A)
出现次数 (O)
位置(左)
关系如下:
A 1-n On-1 L
我在使用 linq to 实体执行此操作时遇到一些困难,但我确信我可以在存储过程中实现它。
这是我应该能够使用 Linq 完成的事情,还是 Linq 创建 Sql 的问题太复杂?如果有任何关于编写 Linq 查询的指示,如果它应该能够做到的话,我们将不胜感激。
最佳答案
我不明白为什么这是不可能做到的,甚至特别困难。是这个问题吗? :)
据我了解,事件表对您的查询并不感兴趣,首先查找出现次数。您可以在输出中包含 Activity
数据,如下所示:
dc.Occurrence.Include("Activity").Where(
o => o.Date >= startDate && o.Date <= endDate
&& o.Location.DistanceFrom(someLocation) < maxDistance)
DistanceFrom
将是您确定距某个位置的距离的方式。我不知道您的数据库设计如何。
如果您使用的是 SQL Server 2008 地理编码,我认为尚不支持该功能。 This article (和 this continuation )可能会引起兴趣。这是关于 LINQ to SQL 的内容,但表达式构建可能会有所帮助。
关于c# - Linq 或存储过程 - 我应该选择哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351452/