【问题标题】:How to find list of objects inside a list of objects using where ? (.Net Core Entity Framework )如何使用 where 在对象列表中查找对象列表? (.Net 核心实体框架)
【发布时间】:2020-02-21 22:21:05
【问题描述】:

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

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 个类别,一切正常,但现在我希望游戏具有多个类别的能力,所以我真的需要这个。

谢谢

【问题讨论】:

    标签: c# asp.net .net entity-framework lambda


    【解决方案1】:

    您应该能够使用.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();
    

    【讨论】:

    • 成功了,感谢您的快速帮助,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多