Esempio n. 1
0
        private void loadLocal_categories(List <string> categoryIds)
        {
            var localIds             = DbContext.Categories.Local.Select(c => c.AudibleCategoryId);
            var remainingCategoryIds = categoryIds
                                       .Distinct()
                                       .Except(localIds)
                                       .ToList();

            // load existing => local
            // remember to include default/empty/missing
            var emptyName = Contributor.GetEmpty().Name;

            if (remainingCategoryIds.Any())
            {
                DbContext.Categories.Where(c => remainingCategoryIds.Contains(c.AudibleCategoryId) || c.Name == emptyName).ToList();
            }
        }
Esempio n. 2
0
        private void loadLocal_contributors(List <string> contributorNames)
        {
            //// BAD: very inefficient
            // var x = context.Contributors.Local.Where(c => !contribNames.Contains(c.Name));

            // GOOD: Except() is efficient. Due to hashing, it's close to O(n)
            var localNames            = DbContext.Contributors.Local.Select(c => c.Name);
            var remainingContribNames = contributorNames
                                        .Distinct()
                                        .Except(localNames)
                                        .ToList();

            // load existing => local
            // remember to include default/empty/missing
            var emptyName = Contributor.GetEmpty().Name;

            if (remainingContribNames.Any())
            {
                DbContext.Contributors.Where(c => remainingContribNames.Contains(c.Name) || c.Name == emptyName).ToList();
            }
        }