Как найти список объектов внутри списка объектов, используя где? (. Net Core Entity Framework) - PullRequest
0 голосов
/ 22 февраля 2020

Я создаю игровой веб-сайт, на котором у Игр есть коллекция категорий

public class Game
    {

        public int Id { get; set; }

        public string Name { get; set; }

        public virtual ICollection<CategoryMain> categoryMain { get; set; }

    }

Я хочу найти список игр, выбрав 1 категорию из списка категорий.

var games= await db.Games.Include(u => u.applicationUser)
                                        .Include(c => c.categoryMain)
                                        .Where(c => c.categoryMain.Id == x) // <-- My Issue Here
                                        .ToListAsync();

Поскольку "categoryMain" - это коллекция, я не могу получить доступ к ее свойствам "Id", чтобы отфильтровать игры по категориям.

Ранее у меня были Игры только с 1 категорией, все работает хорошо, но теперь я хочу иметь возможность для игры должны иметь несколько категорий, поэтому мне это действительно нужно.

Спасибо

1 Ответ

2 голосов
/ 22 февраля 2020

Вы должны быть в состоянии получить желаемый результат, используя метод .Any().

var games = await db.Games
                    .Include(x => x.categoryMain)
                    .Where(x => x.categoryMain.Any(y => y == categoryId)
                    .ToListAsync();

Лично мне всегда легче отменить запрос, если вы делаете что-то подобное, потому что я нахожу это улучшает читаемость.

Примерно так:

var games = await db.CategoryMain
                    .Include(x => x.Game)
                    .Where(x => x.Id == categoryId)
                    .Select(x => x.Game)
                    .ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...