2016-09-08 10 views
0

テーブルから項目のリストを取得し、グループ化ロジックを適用し(割り当てタイプ、開始時間と終了時間でグループ化して)、開始タイプに戻したいと考えています。IEnumerable <CustomType>を一覧に変換し、グループ化ロジックを適用し、IEnumerableに変換する方法<CustomType>?

IEnumerable<Assignment> assignments = UnitOfWork.AssignmentRepository.Get(filter: a => a.Start.CompareTo(start) >= 0 
        && a.End.CompareTo(end) <= 0, 
        orderBy: o => o.OrderBy(a => a.Start)); 

    List<Assignment> pre_alerts = new List<Assignment>(); 

foreach (Assignment a in assignments) 
      { 
       foreach (AssignmentType t in assignmentTypes) 
       { // determine if the assignment's type has a minimum required 
        if (a.AssignmentTypeID == t.AssignmentTypeID && t.Minimum>0) 
        { 

         // get the minimum assignments requierd 
         int min_required = t.Minimum; 

         DateTime s = a.Start; 
         DateTime e = a.End; 
         AssignmentType type = a.AssignmentType; 

         IEnumerable<Assignment> minimum_assignments = UnitOfWork.AssignmentRepository.Get(filter: m => m.Start.CompareTo(s) >= 0 && m.End.CompareTo(e) <= 0 && m.AssignmentTypeID == a.AssignmentTypeID, orderBy: o => o.OrderBy(m => m.Start)); 

         int min_actual = minimum_assignments.Count(); 

         if (min_actual < min_required) 
         { 
         // add a single alert for time range and assignment type 
          pre_alerts.Add(a); 
         } 
        } 
       } 
      } 
var alerts = pre_alerts.GroupBy(x => new Assignment{ x.AssignmentTypeID, x.Start, x.End }).Select(k => k); 

アラートをIEnumerable<Assignment>に変換するにはどうすればよいですか?

答えて

0

Selectを使用している場合は、すでにIEnumerableとして返しています。あなたはそれがあなたのタイプのようにしたい場合:

var alerts = pre_alerts.GroupBy(x => new Assignment{ x.AssignmentTypeID, x.Start, x.End }).Select(k => k.Key); 

GroupByの結果は、これだけkを選択することにより、あなたはIEnumerable<IGrouping<Assignment...>>

を戻ってきている。しかし、それはそれがある場合ように私には感じIGroupingですその場合、GroupByを使用する理由はありませんが、Selectを使用して割り当てを作成してから別のものを作成してください。

+0

groupbyなしでどうすればいいですか? – user5120455

+0

@ user5120455 - あなたが望む論理は何ですか? linqで行うことができる集約ロジックをやっているようです。あなたが持っているものを 'if'ステートメントの' .Where'sに置き換えた場合。特にグループについて - あなたはなぜそれをすることにしましたか? –

関連する問題