【问题标题】:query of join in entities using lambda expression使用 lambda 表达式查询加入实体
【发布时间】:2013-12-14 05:34:02
【问题描述】:
我在我的 Web 应用程序中使用 VS12 和实体框架。
为从数据库(sql server 2008 R2)获取数据制作了baseRepository,其中查询上下文为GetAll(),其中findBy,add,update,saveChanges,dispose,getById()。
使用此存储库进行交易。
在一种情况下,使用连接来获取从三个不同实体中过滤的数据。
任何人都可以举出同样的例子吗..
【问题讨论】:
标签:
c#
sql
sql-server
entity-framework
lambda
【解决方案1】:
我用这种方法解决了这个问题,
using (var db = new KitRepository<ServiceLevel>())
{
using (var kit = new KitRepository<Kit>())
{
var kitServiceLevel = kit.Search(o => o.PatientId == patientId).Select(i => i.kitServiceLevelId).ToList();
var temp = db.Where(o => o.HospitalMasterId == HospitalId && kitServiceLevel.Contains(o.ServiceLevelId) && o.IsEnabled == true).Select(i => i.TabletRequired).ToList();
var entity = db.Search(l => temp.Contains(l.TabletRequired) && lstServiceType.Contains(l.ServiceCodeTypeEnumId)).ToList();
var model = new List<ServiceLevelModel>();
Mapper.Map(entity, model);
return model;
}
}
如果有人优化了查询
var kitServiceLevel = kit.Search(o => o.PatientId == patientId).Select(i => i.kitServiceLevelId).ToList();
var temp = db.Where(o => o.HospitalMasterId == HospitalId && kitServiceLevel.Contains(o.ServiceLevelId) && o.IsEnabled == true).Select(i => i.TabletRequired).ToList();
var entity = db.Search(l => temp.Contains(l.TabletRequired) && lstServiceType.Contains(l.ServiceCodeTypeEnumId)).ToList();
然后告诉我。