From 9ed8220d1ca6122de4e57eaad5b08b626c73dd52 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 15 Aug 2018 08:09:07 -0500 Subject: [PATCH] refactor CollectionExtensions --- .../Extensions/CollectionExtensions.cs | 17 +++++++++++ .../Extensions/EnumerableExtensions.cs | 29 ------------------- .../FilterLists.Services.csproj | 1 + .../Snapshot/SnapshotDe.cs | 3 +- 4 files changed, 20 insertions(+), 30 deletions(-) create mode 100644 src/FilterLists.Services/Extensions/CollectionExtensions.cs delete mode 100644 src/FilterLists.Services/Extensions/EnumerableExtensions.cs diff --git a/src/FilterLists.Services/Extensions/CollectionExtensions.cs b/src/FilterLists.Services/Extensions/CollectionExtensions.cs new file mode 100644 index 000000000..81957558d --- /dev/null +++ b/src/FilterLists.Services/Extensions/CollectionExtensions.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace FilterLists.Services.Extensions +{ + public static class CollectionExtensions + { + //https://stackoverflow.com/a/26360010/2343739 + public static void AddRange(this ICollection destination, IEnumerable source) + { + if (destination is List list) + list.AddRange(source); + else + foreach (var item in source) + destination.Add(item); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Services/Extensions/EnumerableExtensions.cs b/src/FilterLists.Services/Extensions/EnumerableExtensions.cs deleted file mode 100644 index d6594d702..000000000 --- a/src/FilterLists.Services/Extensions/EnumerableExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; - -namespace FilterLists.Services.Extensions -{ - public static class EnumerableExtensions - { - public static void AddRange(this ICollection destination, IEnumerable source) - { - foreach (var item in source) - destination.Add(item); - } - - public static IEnumerable> GetBatches(this IEnumerable source, int batchSize) - { - var batches = new List(batchSize); - foreach (var item in source) - { - batches.Add(item); - if (batches.Count != batchSize) - continue; - yield return batches.AsReadOnly(); - batches = new List(batchSize); - } - - if (batches.Count > 0) - yield return batches.AsReadOnly(); - } - } -} \ No newline at end of file diff --git a/src/FilterLists.Services/FilterLists.Services.csproj b/src/FilterLists.Services/FilterLists.Services.csproj index 6eb37a229..b5df087db 100644 --- a/src/FilterLists.Services/FilterLists.Services.csproj +++ b/src/FilterLists.Services/FilterLists.Services.csproj @@ -20,6 +20,7 @@ + diff --git a/src/FilterLists.Services/Snapshot/SnapshotDe.cs b/src/FilterLists.Services/Snapshot/SnapshotDe.cs index b661d4bd1..fad4d4505 100644 --- a/src/FilterLists.Services/Snapshot/SnapshotDe.cs +++ b/src/FilterLists.Services/Snapshot/SnapshotDe.cs @@ -9,6 +9,7 @@ using FilterLists.Data.Entities.Junctions; using FilterLists.Services.Extensions; using FilterLists.Services.Snapshot.Models; +using MoreLinq; namespace FilterLists.Services.Snapshot { @@ -135,7 +136,7 @@ private static IEnumerable GetRawRules(string content) } private IEnumerable GetSnapshotBatches(IEnumerable rawRules) => - rawRules.GetBatches(BatchSize).Select(b => new SnapshotBatchDe(dbContext, snapshot, b)); + rawRules.Batch(BatchSize).Select(b => new SnapshotBatchDe(dbContext, snapshot, b)); private static async Task SaveSnapshotBatches(IEnumerable snapshotBatches) {