我正在建立一个游戏网站,其中游戏有类别的集合
public class Game
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<CategoryMain> categoryMain { get; set; }
}
我想通过从类别列表中选择一个类别来查找游戏列表。
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"来按类别筛选游戏。
以前我的游戏只有一个类别,一切都很好,但现在我想让游戏有多个类别的能力,所以我真的很需要这个。
感谢
您应该能够使用.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();