2011-09-16 47 views
1

我有一个EF存储过程(函数导入),它返回一个结果集,我希望将结果集分组到多个层次上。有没有简单的方法将结果分组到一个新的对象?有没有简单的方法将EF ResultSet分组到一个新的对象?

我的结果集包含下列数据对象:

 
CategoryId 
EventId 
EventInstanceId 
Name 
DueDate 

我想组的结果按类别和活动,所以我最终Category.List<Event>.List<EventInstances>

class Category 
{ 
    List<Event> Events; 
} 

class Event 
{ 
    List<EventInstance> Instances; 
} 

回答

0

嗯,我要去只是删除我的问题,因为我想通了,但因为有一个投票,我会张贴解决方案,我发现

List<CategoryModel> list = 
    (from category in context.GetEvents(date, date) // Stored Procedure 
     group category by category.CategoryId 
     into groupedByCategory // Group by Category 
     select new CategoryModel 
     { 
      CategoryId = groupedByCategory.Key, 
      Events = new ObservableCollection<EventModel> 
      (
       from evt in groupedByCategory 
       group evt by new { evt.EventId, evt.AssignedUserId, evt.EventName, evt.EventDescription, evt.IsRecurring } 
       into groupedByEvent // Sub-Group for Events 
       select new EventModel 
       { 
        EventId = groupedByCategory.Key, 
        AssignedUserId = groupedByEvent.Key.AssignedUserId, 
        EventDescription = groupedByEvent.Key.EventDescription, 
        EventName = groupedByEvent.Key.EventName, 
        IsRecurring = groupedByEvent.Key.IsRecurring, 
        Instances = new ObservableCollection<EventInstanceModel> 
         (
          from item in groupedByEvent 
           select new EventInstanceModel 
           { 
            CompletedDate = item.CompletedDate, 
            CompletedUserId = item.CompletedUserId, 
            DueDate = item.DueDate, 
            EventInstanceId = item.EventInstanceId, 
            IsSkipped = item.IsSkipped.GetValueOrDefault() 
           } 
         ) 
       } 
      ) 
     } 
    ).ToList(); 
相关问题