活动发生在特定日期的某个位置,但是每个活动可以在不同日期的相同或不同位置重复。我已经创建了一个实体框架模型,并希望用两个日期之间发生的相关活动来填充它,并按与指定位置的位置距离进行排序。
因此,我有一个下表:
活动(A)
发生次数(O)
位置(长)
具有如下关系:
1-n O n-1 L
使用linq对实体执行此操作时遇到一些困难,但是请确保可以在存储过程中实现。
这是使用Linq我应该能够完成的事情,还是Linq创建Sql太复杂了?如果可以的话,任何有关编写Linq查询的指针都将不胜感激。
最佳答案
var query = from occurrence in occurrenceList
join activity in activityList on occurrence.ActivityID equals activity.ID
join location in locationList on occurrence.LocationID equals location.ID
let distance = CLocation.Distance (referenceLocation, location)
orderby distance, activity.Name
where start <= occurrence.Date && occurrence.Date <= end
select new
{
ActivityName = activity.Name,
LocationName = location.Name,
Distance = distance,
Date = occurrence.Date
};