Exemple #1
0
        public static IEnumerable <T> OrderByDependencies <T>(this IEnumerable <T> items)
            where T : class
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            var nodes = items.Distinct().ToHashSet();
            var edges = items.SelectMany(GetEdges).Select(item => ToEdge(item.Item1, item.Item2, items)).ToHashSet();

            return(TopologicalSort.DestructiveOptimized(nodes, edges));
        }