2011-09-16 44 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(); 
相關問題