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); } } }