活动发生在特定日期的某个位置,但是每个活动可以在不同日期的相同或不同位置重复。我已经创建了一个实体框架模型,并希望用两个日期之间发生的相关活动来填充它,并按与指定位置的位置距离进行排序。

因此,我有一个下表:

活动(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
            };

08-04 15:23