From 352af77321d4e22631e08ca08667fa5b96a32c52 Mon Sep 17 00:00:00 2001 From: Leandro Fernandes Vieira Date: Sun, 2 Jul 2023 23:28:41 -0300 Subject: [PATCH 1/3] refactored --- MoreLinq/Slice.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/MoreLinq/Slice.cs b/MoreLinq/Slice.cs index 86f8306fa..d503d1109 100644 --- a/MoreLinq/Slice.cs +++ b/MoreLinq/Slice.cs @@ -57,9 +57,23 @@ public static IEnumerable Slice(this IEnumerable sequence, int startInd { IList list => SliceList(list.Count, i => list[i]), IReadOnlyList list => SliceList(list.Count, i => list[i]), - var seq => seq.Skip(startIndex).Take(count) + _ => SliceDefault() }; + IEnumerable SliceDefault() + { + var lastIndex = startIndex + count; + var index = -1; + foreach (var item in sequence) + { + if (++index >= lastIndex) + yield break; + + else if (index >= startIndex) + yield return item; + } + } + IEnumerable SliceList(int listCount, Func indexer) { var countdown = count; From 118b12c6f0c3a55216a63746521ae3576a895229 Mon Sep 17 00:00:00 2001 From: Leandro Fernandes Vieira Date: Sun, 2 Jul 2023 23:32:45 -0300 Subject: [PATCH 2/3] remove empty line --- MoreLinq/Slice.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/MoreLinq/Slice.cs b/MoreLinq/Slice.cs index d503d1109..64fe89e9e 100644 --- a/MoreLinq/Slice.cs +++ b/MoreLinq/Slice.cs @@ -68,7 +68,6 @@ IEnumerable SliceDefault() { if (++index >= lastIndex) yield break; - else if (index >= startIndex) yield return item; } From e2212095bb85cd516782b140b3bfdfef44ac49fb Mon Sep 17 00:00:00 2001 From: Leandro Fernandes Vieira Date: Sun, 2 Jul 2023 23:58:23 -0300 Subject: [PATCH 3/3] remove unnessary using --- MoreLinq/Slice.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/MoreLinq/Slice.cs b/MoreLinq/Slice.cs index 64fe89e9e..656be64f3 100644 --- a/MoreLinq/Slice.cs +++ b/MoreLinq/Slice.cs @@ -19,7 +19,6 @@ namespace MoreLinq { using System; using System.Collections.Generic; - using System.Linq; public static partial class MoreEnumerable {