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