从表中获取单个值的最佳方式

本文关键字:最佳 方式 单个值 获取 | 更新日期: 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);