如何使用where在对象列表中查找对象列表?(.Net核心实体框架)



我正在建立一个游戏网站,其中游戏有类别的集合

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();

最新更新