public static void ApplyKeywords(this IEnumerable<BaseLibraryLink> links, KeywordModel[] keywords) { foreach (var libraryLink in links) { libraryLink.Tags.Keywords.RemoveAll(tagForRemove => !keywords.Any(k => String.Equals(k.Name, tagForRemove.Name, StringComparison.OrdinalIgnoreCase))); libraryLink.Tags.Keywords.AddRange(keywords .Where(tagForAdd => tagForAdd.IsShared && !libraryLink.Tags.Keywords.Any(k => String.Equals(k.Name, tagForAdd.Name, StringComparison.OrdinalIgnoreCase))) .Select(tag => new SearchTag { Name = tag.Name })); libraryLink.MarkAsModified(); } }