private void UpdateCategories(string categoryString, double level) { if (string.IsNullOrEmpty(categoryString)) return; var newCategory = new DinamoCategory() { OriginalName = categoryString, CleanName = GetCleanCategory(categoryString) }; int offset = 1; if (_categoriesStack.Count == 0) _categoriesStack.Push(newCategory); else { while (_categoriesStack.Count >= level - offset) _categoriesStack.Pop(); if (!string.IsNullOrEmpty(newCategory.CleanName)) // если категория совпала, то нет смысла её добавлять if (_categoriesStack.Count == 0 || newCategory.CleanName != _categoriesStack.Peek().CleanName) _categoriesStack.Push(newCategory); } }
private void UpdateCategories(string categoryString) { if (string.IsNullOrEmpty(categoryString)) return; var newCategory = new DinamoCategory() { OriginalName = categoryString, CleanName = GetCleanCategory(categoryString) }; while (_categoriesStack.Count != 0) { if (!newCategory.FirstBlock.StartsWith(_categoriesStack.Peek().FirstBlock)) { _categoriesStack.Pop(); } else { if (!string.IsNullOrEmpty(newCategory.CleanName)) // если категория совпала, то нет смысла её добавлять if (newCategory.CleanName != _categoriesStack.Peek().CleanName) _categoriesStack.Push(newCategory); break; } } if (_categoriesStack.Count == 0) { _categoriesStack.Push(newCategory); } }