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

本文关键字:转换 字符串 问题 模型 类型 | 更新日期: 2023-09-27 18:37:12

我真的不知道出了什么问题:我正在使用 asp.net web api 学习有关 rest Web 服务的教程,并在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

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

记下方法的签名。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();