Ale*_*lex 6 c# linq sql-server entity-framework
我只需要从 Hospital 表中选择两列,HospitalId 和 Name。我尝试了下面的代码,它从 Hospital 表中选择了所有列,这导致了性能下降。请帮我从 Hospital 表中只选择两列
public HttpResponseMessage GetAvailableHospitalsByAjax(System.Guid? DirectorateOfHealthID = null, System.Guid? UnitTypeID = null, string DeviceTypeIDs = null)
{
Context db = new Context();
var query = db.Hospitals.AsQueryable();
if (UnitTypeID != null)
{
query = query.Where(j => j.HospitalDepartments.Any(www => www.Units.Any(u => u.UnitTypeID == UnitTypeID)));
}
if (DirectorateOfHealthID != null)
{
query = query.Where(h => h.DirectorateHealthID == DirectorateOfHealthID);
}
query = query.Where(j => j.HospitalDepartments.Any(u => u.Units.Any(d => d.Devices.Any(s => s.Status == Enums.DeviceStatus.Free)))
&& j.HospitalDepartments.Any(hd => hd.Units.Any(u => u.Beds.Any(b => b.Status == Enums.BedStatus.Free))));
var list = query.ToList().Select(w => new HospitalInfo()
{
Id = w.ID,
Name = w.Name
}).ToList();
return Request.CreateResponse(HttpStatusCode.OK, list);
}
Run Code Online (Sandbox Code Playgroud)
删除ToList投影前的调用:
var list = query.Select(w => new HospitalInfo()
{
Id = w.ID,
Name = w.Name
}).ToList();
Run Code Online (Sandbox Code Playgroud)
通过该ToList调用,您可以在进行投影之前具体化您的查询
| 归档时间: |
|
| 查看次数: |
6967 次 |
| 最近记录: |