From 464bff260782602ce477e707a42255cf3318e84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Morgan?= Date: Sat, 18 Nov 2023 12:27:55 -0600 Subject: [PATCH] =?UTF-8?q?Funci=C3=B3n=20de=20enumeraci=C3=B3n=20con=20?= =?UTF-8?q?=C3=ADndice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Lib/MCART/Helpers/CollectionHelpers.cs | 18 ++++++++++++++++++ .../Helpers/CollectionHelpersTests.cs | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/src/Lib/MCART/Helpers/CollectionHelpers.cs b/src/Lib/MCART/Helpers/CollectionHelpers.cs index 564ae4751..e43251cfc 100644 --- a/src/Lib/MCART/Helpers/CollectionHelpers.cs +++ b/src/Lib/MCART/Helpers/CollectionHelpers.cs @@ -633,6 +633,24 @@ public static IEnumerable ToPercentDouble(this IEnumerable collecti return ToPercentDouble(collection, 0, max); } + /// + /// Enumera los elementos de la colección, incluyendo el índice de cada + /// elemento devuelto. + /// + /// Tipo de elementos de la colección. + /// + /// Colección para la cual enumerar los elementos junto con su índice. + /// + /// Una enumeración de cada elemento junto a su índice. + public static IEnumerable<(int index, T element)> WithIndex(this IEnumerable collection) + { + int i = 0; + foreach (var j in collection) + { + yield return (i++, j); + } + } + /// /// Convierte los valores de una colección de elementos /// a porcentajes. diff --git a/src/Tests/Lib/MCART.Tests/Helpers/CollectionHelpersTests.cs b/src/Tests/Lib/MCART.Tests/Helpers/CollectionHelpersTests.cs index f248b04f0..a5feb9166 100644 --- a/src/Tests/Lib/MCART.Tests/Helpers/CollectionHelpersTests.cs +++ b/src/Tests/Lib/MCART.Tests/Helpers/CollectionHelpersTests.cs @@ -406,6 +406,12 @@ public async Task ToPercentAsync_Test_Double() Assert.AreEqual(new[] { 0.2, 0.4, 0.6, 0.8, 1.0, double.NaN }, await Read(GetValuesAsync(double.NaN).ToPercent(0, 5))); } + [Test] + public void WithIndex_test() + { + Assert.That("ABC".ToCharArray().WithIndex(), Is.EquivalentTo(new (int, char)[] { (0,'A'), (1, 'B'), (2, 'C') })); + } + private static async IAsyncEnumerable GetValuesAsync(T? tail = null) where T : struct { yield return (T)Convert.ChangeType(1, typeof(T));