[英]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.