我的工作我的网络API项目。如何在LINQ中实现对数据库的单一调用?
我有这个Linq到实体行控制器类中:
SiteObject[] objects = await ObjectsRepository.Get().Where(x => x.SiteRegionId == regionId).ToArrayAsync();
return Ok(objects.Select(x => new ObjectBreif
{
IsServiceable = Context.InspectionReview.Any(i => i.ObjectId == x.Id && i.IsNormal == false) ? false : Context.InspectionReview.Any(i => i.ObjectId == x.Id) ? true : (bool?)null
})
我想创造一些更有效的则行上面,不要做两次数据库调用。
如果InspectionReview表中存在至少一行满足这个 条件:
ObjectId = 5 AND IsNormal = false
我需要设置IsServiceable
到false
否则,我需要检查,如果在InspectionReview表中存在的行与此条件:
ObjectId = 5
如果是,IsServiceable
必须得到true
否则,null
。
我用一行代码above.But,你可以看到它不是有效的,因为我访问两次数据库实现这一点。
任何想法,任何想法,我怎么能达到同样的效果只在一排一个调用数据库,我不希望创建附加功能为这个提议或额外行,因为我想要的代码保持优雅。
什么'objects'? –