| File: EnumerableExtensions.cs | Web Access |
| Project: src\command-line-api\src\System.CommandLine\System.CommandLine.csproj (System.CommandLine) |
// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections; using System.Collections.Generic; namespace System.CommandLine { /// <summary> /// Provides a set of <see langword="static"/> methods for querying objects that implement <see cref="IEnumerable"/>. /// </summary> internal static class EnumerableExtensions { internal static IEnumerable<T> FlattenBreadthFirst<T>( this IEnumerable<T> source, Func<T, IEnumerable<T>> children) { var queue = new Queue<T>(); foreach (var item in source) { queue.Enqueue(item); } while (queue.Count > 0) { var current = queue.Dequeue(); foreach (var option in children(current)) { queue.Enqueue(option); } yield return current; } } } }