Как очистить список после первого выбора - PullRequest
0 голосов
/ 06 мая 2020

У меня несколько флажков, и я сохраняю решение пользователя в списке, а затем мне нужно отфильтровать список на основе решения пользователя. Дело в том, что как только я собираю решение пользователя и здесь, если (UserDecision.Count> 1), я сравниваю, сколько значений выбрал пользователь, если я сделаю это один раз, то все в порядке, но если я фильтрую свои статьи, а затем go обратно в фильтр и измените значения, затем он добавляет поверх него, поэтому, если я в первый раз выбрал два варианта, а затем вернулся и решил, что на самом деле хочу только один, список содержит 3 вместо одного.

public static List<int> UserDecision { get; set; } = new List<int>();

public bool FilterAllItems
{
    set
    {               
        _filterAllItems = value;
        NotifyPropertyChanged();
        if (FilterAllItems == true)
        {
            UserDecision.Add(_parentCategoryId = -1);
        }
    }
    get => _filterAllItems;
}

public bool FilterBeginnerItems
{
    set
    {
        _filterBeginnerItems = value;
        NotifyPropertyChanged();

        if (_filterBeginnerItems)
        {
            FilterAllItems = false;

            UserDecision.Add(_parentCategoryId = 1);
        }
    }
    get => _filterBeginnerItems;
}

public bool FilterIntermediateItems
{
    set
    {
        _filterIntermediateItems = value;
        NotifyPropertyChanged();

        if (_filterIntermediateItems)
        {
            FilterAllItems = false;
            UserDecision.Add(_parentCategoryId = 2);

        }
    }
    get => _filterIntermediateItems;
}


private static List<Article> FindAllArticlesForPurchases(List<Article> allArticles)
{
    foreach(var userDecision in UserDecision)
    {
        if (userDecision != -1)
        {
            if(UserDecision.Count > 1)
            {
                foreach (var categoryGroup in _allUserCategoryGroups)
                {
                    var allGroupCategories = _allCategories.Where(m => m.CategoryGroupId == categoryGroup.Id && UserDecision.Contains(m.CategoryGroupId)).ToList();
                    foreach (var category in allGroupCategories)
                    {
                        var categoryArticles = _allArticlesForPurchase.Where(m => m.CategoryId == category.Id).ToList();

                        allArticles.AddRange(categoryArticles);

                    }

                }
            }    
            else
            {
                allArticles = _allArticlesForPurchase;
            }
        }

        return allArticles;
    }

1 Ответ

0 голосов
/ 06 мая 2020

используйте метод Clear()

UserDecision.Clear();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...