我正在使用VS 2017开发我的.NET应用程序。我编写了以下代码来从api中的表中检索数据
[HttpGet]
[Route("Index")]
public IEnumerable<Strings> Index()
{
var list = db.Strings.Select(x => new { x.Iid, x.Value, x.Description, x.Itype }).ToList();
return list;
}
我遇到以下错误:
错误CS0266无法将类型'System.Collections.Generic.List <>'隐式转换为'System.Collections.Generic.IEnumerable'。存在显式转换(您是否缺少演员表?)**
如何进行铸造?我已经将IEnumerable更改为IList,但是存在问题。我不想为此创建ViewModel。
答案 0 :(得分:8)
您要使用Select(x => new …)
创建一个匿名对象列表,然后尝试将其作为IEnumerable<Strings>
返回,这就是您收到错误消息的原因。
无论如何(1)您都无法从方法中返回匿名对象,因此,请更改查询以返回Strings
的列表,或使用中间对象来表示数据。
(1)可以,但是不能以可用的形式。
答案 1 :(得分:3)
为什么不这样做:
public IEnumerable<Strings> Index()
{
var list = db.Strings.AsEnumerable();
return list;
}
或者如果要投影到模型:
public IEnumerable<Strings> Index()
{
var list = db.Strings.Select(x => new Strings { Iid = x.Iid, Itype = x.Itype, Description = x.Description, Value = x.Value } ).AsEnumerable();
return list;
}