繁体   English   中英

实体框架代码最有效的Linq查询

[英]Entity Framework Code Most First Efficient Linq Query

我有以下实体(为简洁起见,以下简称);

public class Job {
   Hospital Hospital { get; set; }
   Status Status { get; set; }
}

public class User {
   string UserId { get; set; }
   string UserName { get; set; } 
}

public class UserHospital {
   User User { get; set;}
   Hospital Hospital { get; set; }
}

public class Hospital {
   int HospitalId { get; set; }
}

现在,我想获得一个特定状态下所有作业的列表,其中用户与该作业具有UserHospital关系。

以POCO的布局方式,我假设我将必须获取所有UserHospital关系,然后建立

var userHospitals = context.Where<UserHospital>(x => x.User.UserName == "username").ToList();

然后遍历并从Job角度构建列表?

var jobs = new List<Job>();

foreach(var userHospital in userHospitals)
   jobs.AddRange(context.Where<Job>(x => x.Hospital.Id == userHospital.Hospital.Id).ToList())

return jobs;

有更好的方法吗?

尝试这个:

var res=context.Where<Job>(j=> context.Any<UserHospital>(u=>u.User.Username=="username" && u.Hospital.Id==j.Hospital.Id)).ToList();

为什么您要为用户<->医院多对多关系建立单独的实体? 如果您像这样在各方面都有收藏。

Hospital {
   Icollection<User> Users{get;set;}
}

您的查询将像context.Jobs.Where(j=>j.Hospital.Users.Any(u=>u.username=="something")) ,并且可以很好地转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM