无法将类型模型隐式转换为字符串问题

时间:2016-03-02 15:12:30

标签: c# asp.net-web-api

我真的不知道出了什么问题:我正在使用asp.net web api关注其他网络服务的教程,我在GET(int id)中收到了这个错误: 无法将Models.Client类型隐式转换为string

这是我的代码:

public string Get(int id)
{
    using (ClientDB db = new ClientDB())
    {
        return db.Clients.FirstOrDefault<Client>(c => c.Id == id);
    }
}

模型中的Id是整数类型,因此id 我也尝试了SingleOrDefault而不是FirstOrDefault

1 个答案:

答案 0 :(得分:2)

请注意您的方法的签名。 return类型为string

public string Get(int id) //this signature shows that you should return a string

但是您在方法块中返回Client

return db.Clients.FirstOrDefault<Client>(c => c.Id == id); //you return a Client (or Default) here!

因此你得到了错误。

您需要更改方法以返回Client

public Client Get(int id) //change to return Client

或者更改块中的return以返回string

return db.Clients.FirstOrDefault<Client>(c => c.Id == id).ToString();

对于后一种解决方案,请注意FirstOrDefault导致null。更安全的方式是:

Client client = db.Clients.FirstOrDefault<Client>(c => c.Id == id);
return client == null ? null : client.ToString();

在C#6中,可以简化其语法:

return db.Clients.FirstOrDefault<Client>(c => c.Id == id)?.ToString();