从表中获取单个值的最佳方式
本文关键字:最佳 方式 单个值 获取 | 更新日期: 2023-09-27 18:26:22
因此,我有一个方法,旨在使用表中可能存在也可能不存在的键从表中获取单个值。在更改了一些名称后,我的方法看起来是这样的。
使用实体框架和Linq
public IHttpActionResult GetBool(int Id)
{
Entity e = db.Entity.FirstOrDefault(x => x.Id== Id);
if (e == null) return NotFound();
return Ok(e.BoolValue);
}
这个调用似乎是不必要的,拉取整个实体只是为了处理一个值。如何在只获取相关列的同时错误检查可能不存在的实体?
我的解决方案类似
bool value =
(from e in db.Entity
where e.ID == Id
select e.BoolValue).ToList().ElementAtOrDefault(0);
if(value== null) return NotFound();
return Ok(value);
这是最好的查询方式吗?
解决方案:
最佳答案:
return db.Entity.Where(x => x.Id== Id)
.Select(x => Ok(x.BoolValue))
.DefaultIfEmpty(NotFound())
.First();
出于个人需要,我修改了它,使其作为JSON对象返回。
您可以选择此列并指定默认值:
return db.Entity.Where(x => x.Id== Id)
.Select(x => Ok(x.BoolValue))
.DefaultIfEmpty(NotFound())
.First();
然而,选择一条记录并返回其中一列并不是很昂贵。如果它导致了性能问题,那么最好用一个查询获取多条记录,而不是总是在循环中执行GetBool
。
var value = (from e in db.Entity
where e.ID == Id
select e.BoolValue).SingleOrDefault();
if(value == null)
return NotFound();
else
return Ok(value);