2011-09-16 3 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(); 
関連する問題