private void AddTagAssociation(TagAssociation tagAssociation) { if (tagAssociation.IsDisabled) { TagAssociation ta; TagAssociations.TryRemove(tagAssociation.Id, out ta); ConcurrentDictionary <long, long> mtl; if (MentionTagLookup.TryRemove(tagAssociation.MentionId, out mtl)) { long id; mtl.TryRemove(tagAssociation.TagId, out id); } Mention m; if (Mentions.TryGetValue(tagAssociation.MentionId, out m)) { if (m.Tags.Contains(tagAssociation.TagId)) { m.Tags.Remove(tagAssociation.TagId); } } } else { if (!ReferenceEquals(TagAssociations.AddOrUpdate(tagAssociation.Id, tagAssociation, (x, y) => y), tagAssociation)) { return; } MentionTagLookup.AddOrUpdate(tagAssociation.MentionId, new ConcurrentDictionary <long, long>(new KeyValuePair <long, long>[] { new KeyValuePair <long, long>(tagAssociation.TagId, tagAssociation.Id) }), (x, y) => { y.AddOrUpdate(tagAssociation.TagId, tagAssociation.Id, (j, k) => { return(k); }); return(y); }); Mention mention; if (!Mentions.TryGetValue(tagAssociation.MentionId, out mention)) { return; } if (mention.Tags == null || !mention.Tags.Contains(tagAssociation.TagId)) { if (mention.Tags == null) { mention.Tags = new List <long>(); } mention.Tags.Add(tagAssociation.TagId); } } }
private void AddTagAssociation(TagAssociation tagAssociation) { if (tagAssociation.IsDisabled) { TagAssociation ta; TagAssociations.TryRemove(tagAssociation.Id, out ta); ConcurrentDictionary<long, long> mtl; if (MentionTagLookup.TryRemove(tagAssociation.MentionId, out mtl)) { long id; mtl.TryRemove(tagAssociation.TagId, out id); } Mention m; if (Mentions.TryGetValue(tagAssociation.MentionId, out m)) { if(m.Tags.Contains(tagAssociation.TagId)) m.Tags.Remove(tagAssociation.TagId); } } else { if (!ReferenceEquals(TagAssociations.AddOrUpdate(tagAssociation.Id, tagAssociation, (x, y) => y), tagAssociation)) { return; } MentionTagLookup.AddOrUpdate(tagAssociation.MentionId, new ConcurrentDictionary<long, long>(new KeyValuePair<long, long>[] { new KeyValuePair<long, long>(tagAssociation.TagId, tagAssociation.Id) }), (x, y) => { y.AddOrUpdate(tagAssociation.TagId, tagAssociation.Id, (j, k) => { return k; }); return y; }); Mention mention; if (!Mentions.TryGetValue(tagAssociation.MentionId, out mention)) { return; } if (mention.Tags == null || !mention.Tags.Contains(tagAssociation.TagId)) { if (mention.Tags == null) mention.Tags = new List<long>(); mention.Tags.Add(tagAssociation.TagId); } } }