我真的不知道出了什么问题:我正在使用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
答案 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();