Exemple #1
0
        public virtual void UpdateBlogPostTags(BlogPost blogPost, string[] blogPostTags)
        {
            if (blogPost == null)
            {
                throw new ArgumentNullException(nameof(blogPost));
            }

            var existingBlogPostTags = blogPost.BlogPostTags.ToList();
            var blogPostTagsToRemove = new List <BlogPostTag>();

            //筛选出需要删除的标签
            foreach (var existingBlogPostTag in existingBlogPostTags)
            {
                var found = false;
                foreach (var newProductTag in blogPostTags)
                {
                    if (existingBlogPostTag.Name.Equals(newProductTag, StringComparison.InvariantCultureIgnoreCase))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    blogPostTagsToRemove.Add(existingBlogPostTag);
                }
            }

            //删除标签
            foreach (var blogPostTag in blogPostTagsToRemove)
            {
                blogPost.BlogPostTags.Remove(blogPostTag);
                _blogService.UpdateBlogPost(blogPost);
            }

            //新增标签
            foreach (var tagName in blogPostTags)
            {
                BlogPostTag blogPostTag;
                var         blogPostTag2 = GetBlogPostTagByName(tagName);
                if (blogPostTag2 == null)
                {
                    blogPostTag = new BlogPostTag
                    {
                        Name = tagName
                    };
                    InsertBlogPostTag(blogPostTag);
                }
                else
                {
                    blogPostTag = blogPostTag2;
                }
                if (!blogPost.BlogPostTagExists(blogPostTag.Id))
                {
                    blogPost.BlogPostTags.Add(blogPostTag);
                    _blogService.UpdateBlogPost(blogPost);
                }
            }
        }