From 6e18b3461c43e0d3c4151b00204e8905e08cfaa0 Mon Sep 17 00:00:00 2001 From: "Chris.Watts90@outlook.com" Date: Wed, 6 Jun 2018 13:38:49 +0100 Subject: [PATCH] add extension method for excluding the contents of one list from another. fix UpdateUser to use Exclude rather than Except method for linq. #98 --- .../SQLiteRepository/Extensions/Extensions.cs | 18 ++++++++++++++++++ .../SQLiteRepository/SQLiteRepository.cs | 7 +++---- .../SQLiteRepository/SQLiteRepository.csproj | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 DataCenter_Windows/WindowsDataCenter/SQLiteRepository/Extensions/Extensions.cs diff --git a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/Extensions/Extensions.cs b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/Extensions/Extensions.cs new file mode 100644 index 0000000..ad3bc2f --- /dev/null +++ b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/Extensions/Extensions.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SQLiteRepository.Extensions +{ + public static class EnumerableExtensions + { + public static IEnumerable Exclude(this IEnumerable source, + IEnumerable exclude, Func keySelector) + { + var excludedSet = new HashSet(exclude.Select(keySelector)); + return source.Where(item => !excludedSet.Contains(keySelector(item))); + } + } +} diff --git a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs index 94e09ed..29f6716 100644 --- a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs +++ b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.cs @@ -9,6 +9,7 @@ using Interfaces; using SQLite.Net; using SQLite.Net.Platform.Win32; using SQLiteRepository.Converters; +using SQLiteRepository.Extensions; using SQLiteRepository.Properties; namespace SQLiteRepository @@ -241,12 +242,11 @@ namespace SQLiteRepository public OperationResponse UpdateUser(User user, out int userIdResult) { var ret = OperationResponse.NONE; - //Get a list of current associated identifiers, convert into a list of Identifier Objects.. var currentCards = _connection.Query(SQLiteProcedures.GET_CARDS_BY_USER_ID, user.UserId) - .Select(IdentifierConverter.ConvertToIdentifierDto); - var cardsToRemove = currentCards.Except(user.AssociatedIdentifiers).Select(x => x.Id).ToList(); + .Select(IdentifierConverter.ConvertToIdentifierDto).ToList(); + var cardsToRemove = currentCards.Exclude(user.AssociatedIdentifiers, x => x.Id).Select(x => x.Id).ToList(); #region Update/Create User int userId; @@ -885,6 +885,5 @@ namespace SQLiteRepository userId ); } - } } diff --git a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.csproj b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.csproj index a666342..9d457bc 100644 --- a/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.csproj +++ b/DataCenter_Windows/WindowsDataCenter/SQLiteRepository/SQLiteRepository.csproj @@ -83,6 +83,7 @@ +