使用linq实例化包含其他对象列表的对象,其中查询条件位于内部列表

时间:2015-10-01 19:02:38

标签: c# mysql linq

我有一个数据库表,让我们称之为“人物”,一个与之关联的实体,以及一个视图模型类Person,它包含来自另一个表的对象列表,让我们说'乔布斯'。每份工作都有一段时间。使用LINQ,我想创建一个包含IQueryable的IQueryable。

数据库中有很多人。我想拉扯那些工作时间超过6个月的人。

我拥有的是:

public IQueryable<Person> GetPeople() =>
    Repo<Person>.Get().Select(p => new Person 
    {
        Name = p.Name,
        Jobs = GetJobs(p.Name)
    }).Where(h => h.Jobs.Count() > 0);

public IQueryable<Job> GetJobs(string name) => 
    Repo<Job>.Get().Where(j => j.name == name && j.time > 6);

问题是这会拉动每个人,然后查询每个人的工作,这是低效的。是否有一种很好的方法可以首先提取工作,然后创建一个人员列表,每个人都有自己的合格工作列表?

1 个答案:

答案 0 :(得分:0)

通常情况下,如果使用实体框架,我会说你会这样做:

Person

这假设您有一个People类,由表Person表示,Jobs类有一个名为Jobs的导航属性,引用{{1}} 1}}表。