Как исправить: Невозможно преобразовать лямбда-выражение в тип int, потому что не является делегатом? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь получить решение пользователя из списка, но получаю, что не могу преобразовать лямбда-выражение в тип int, потому что не является делегатом. Как я могу решить это? Я посмотрел на inte rnet, но, так как я совсем новичок, я не уверен, каково правильное решение

public static List<int> UserDecisionResult  { get; set; }

public void GetUserDecision()
        {
            List<int> userDecision = new List<int>();
            if (FilterAllItems) userDecision.Add(_parentCategoryId = -1);
            if (FilterBeginnerItems) userDecision.Add(_parentCategoryId = 1);
            if (FilterIntermediateItems) userDecision.Add(_parentCategoryId = 2);
            if (FilterUpperIntermediateItems) userDecision.Add(_parentCategoryId = 3);
            if (FilterAdvancedItems) userDecision.Add(_parentCategoryId = 4);
            UserDecisionResult = userDecision;


        }


        private static List<Article> FindAllArticlesForPurchase(List<Article> allArticles)
        {
            var result = UserDecisionResult;

            if (_parentCategoryId != -1)
            {
                foreach (var categoryGroup in _allUserCategoryGroups)
                {
                    var allGroupCategories = _allCategories.Where(m => m.CategoryGroupId == categoryGroup.Id).ToList();

                    if (_parentCategoryId != -1)
                    {
                        foreach (var category in allGroupCategories)
                        {
                            if (category.ParentId == _parentCategoryId && _parentCategoryId != -1)
                            {

                                var categoryArticles = _allArticlesForPurchase.Where(result.Contains(m => m.CategoryId == category.Id).ToList();
                                //var categoryArticles = _allArticlesForPurchase.Where(result.Contains(m => m.CategoryId == category.Id).ToList());
                                allArticles.AddRange(categoryArticles);
                            }
                        } 
                    }
                }
            }
            else
            {
                allArticles = _allArticlesForPurchase;
            }

            return allArticles;
        }

1 Ответ

1 голос
/ 30 апреля 2020

Ваше лямбда-выражение здесь неверно из-за синтаксиса. Вы можете попробовать:

var categoryArticles = _allArticlesForPurchase
                       .Where(m => m.CategoryId == category.Id 
                              && result.Contains(m.CategoryId))
                       .ToList();

или, если Contains здесь какая-то пользовательская реализация, тогда попробуйте:

var categoryArticles = _allArticlesForPurchase
                   .Where(_ => result.Contains(m => _.CategoryId == category.Id))
                   .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...