我有一个数据库表,让我们称之为“人物”,一个与之关联的实体,以及一个视图模型类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);
问题是这会拉动每个人,然后查询每个人的工作,这是低效的。是否有一种很好的方法可以首先提取工作,然后创建一个人员列表,每个人都有自己的合格工作列表?
答案 0 :(得分:0)
通常情况下,如果使用实体框架,我会说你会这样做:
Person
这假设您有一个People
类,由表Person
表示,Jobs
类有一个名为Jobs
的导航属性,引用{{1}} 1}}表。