Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何通过linq查询从表中仅获取两个字段?_Sql Server_Linq_.net Core_Entity Framework Core - Fatal编程技术网

Sql server 如何通过linq查询从表中仅获取两个字段?

Sql server 如何通过linq查询从表中仅获取两个字段?,sql-server,linq,.net-core,entity-framework-core,Sql Server,Linq,.net Core,Entity Framework Core,我有一个.netcore(v3.1),我在其中安装了Microsoft SQL Server数据库提供程序nuget包,用于实体框架核心 我只想从数据库中获取两个字段 错误:严重性代码说明项目文件行抑制状态 错误CS0266无法隐式转换类型 “System.Linq.IQueryable” 到“ExampleAuth.Model.Employee”。存在显式转换(正在进行) 你错过了一个演员吗?) API是 [HttpGet] [Route("GetById/{id}&

我有一个.netcore(v3.1),我在其中安装了Microsoft SQL Server数据库提供程序nuget包,用于实体框架核心

我只想从数据库中获取两个字段

错误:严重性代码说明项目文件行抑制状态 错误CS0266无法隐式转换类型 “System.Linq.IQueryable” 到“ExampleAuth.Model.Employee”。存在显式转换(正在进行) 你错过了一个演员吗?)

API是

    [HttpGet]
    [Route("GetById/{id}")]
    public Employee GetById(int id)
    {
        if (id != 0)
        {
            return bl.GetById(id);
        }
        else
        {
            throw new Exception("! No Data Found");
        }
    }

有几件事。首先,您试图返回整个查询,而不是单个员工。其次,您正在创建
Employee
类的一个实例,而不是一个实例。您的代码应该如下所示:

var response = db.Employee
    .Single(x => x.Id == id) // Use single to get an individual item
    .Select(x => new Employee // Make a new Employee object
    {
        Name = x.Name,
        Number = x.Number
    });
现在
response
包含一个
Employee
对象。请注意,如果没有与该ID匹配的员工,这将引发异常,但这可能是一个好主意。您可以通过将
Single
替换为
SingleOrDefault

来处理此问题,请尝试下面的查询

var response = (from objEmp in db.Employee where objEmp.Id == id select new
    {
        Name = objEmp.Name,
        Number = objEmp.Number
    }).FirstOrDefault();

if(response  != null)
{
response.Name // For access name
response.Number // For access number
}
我找到了解决办法。。。 它看起来像

public Employee GetById(int id)
    {
        var response = db.Employee
            .Where(x => x.Id == id)
            .Select(x => new Employee{Name = x.Name,Number = x.Number}).FirstOrDefault();
        return response;
    }

多亏了大家……

是一种被许多产品支持的语言。你用哪一种?(可能是MS SQL Server?)用于实体框架核心的Microsoft SQL Server数据库提供程序。谢谢您,先生,我从您的回答中得到了一个解决方案
public Employee GetById(int id)
    {
        var response = db.Employee
            .Where(x => x.Id == id)
            .Select(x => new Employee{Name = x.Name,Number = x.Number}).FirstOrDefault();
        return response;
    }