public void ReflectChecksToMemo(Memo memo) { Contract.Requires(memo != null); var currents = memo.Tags.ToArray(); var checkeds = GetCheckedTags().ToArray(); var removings = currents.Except(checkeds); var addings = checkeds.Except(currents); foreach (var removing in removings) { memo.RemoveTag(removing); } foreach (var adding in addings) { memo.AddTag(adding); } }