簡體   English   中英

如何轉換IEnumerable <CustomType> 列出,應用分組邏輯,然后轉換回IEnumerable <CustomType> ?

[英]How to convert IEnumerable<CustomType> to List, applying grouping logic, and convert back to 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>

使用Select您已經將其作為IEnumerable返回。 如果您希望它是您的類型,則:

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

GroupBy的結果是一個IGrouping因此僅選擇k即可返回IEnumerable<IGrouping<Assignment...>>

但是在我看來,如果是這種情況,那么沒有理由使用GroupBy而只需Select來創建分配,然后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM