Пример #1
0
        List <EventsThreadRow> SortRows(List <EventsThreadRow> threads)
        {
            List <EventsThreadGroup> groups = new List <EventsThreadGroup>();

            foreach (EventsThreadRow thread in threads)
            {
                EventsThreadGroup outputGroup = null;
                foreach (EventsThreadGroup group in groups)
                {
                    if (group.IsMatch(thread))
                    {
                        outputGroup = group;
                        break;
                    }
                }

                if (outputGroup == null)
                {
                    outputGroup = new EventsThreadGroup();
                    groups.Add(outputGroup);
                }

                outputGroup.Threads.Add(thread);
            }

            List <EventsThreadRow> result = new List <EventsThreadRow>();

            groups.ForEach(g => g.Sort());
            groups.Sort();
            foreach (var group in groups)
            {
                result.AddRange(group.Threads);
            }

            return(result);
        }