无法将类型“IQueryable”隐式转换为 Generic.IList' 从 EF 上下文中检索记录列表作为列表
Posted
技术标签:
【中文标题】无法将类型“IQueryable”隐式转换为 Generic.IList\' 从 EF 上下文中检索记录列表作为列表【英文标题】:Cannot implicitly convert type 'IQueryable' to Generic.IList' Retrieve list of records as List from EF context无法将类型“IQueryable”隐式转换为 Generic.IList' 从 EF 上下文中检索记录列表作为列表 【发布时间】:2021-12-06 21:03:49 【问题描述】:我有一个方法:
1.
public ActionResult<List<CountryMst>> GetStateById(int countryId)
// return specific column
var stateList = databaseContext.statemaster
.Where(a => a.countryMstId == countryId)
.Select(a => new a.stateId, a.stateName);
return stateList;
public class CountryMst
[Key]
public int countryId get; set;
public string countryName get; set;
public class StateMst
[Key]
public int stateId get; set;
public string stateName get; set;
public CountryMst countryMst get; set;
public int countryMstId get; set;
和所选位置的错误:
错误 CS0029 无法将类型 'System.Linq.IQueryable>' 隐式转换为
'Microsoft.AspNetCore.Mvc.ActionResult
知道怎么解决吗?
【问题讨论】:
我最后使用了 ToList() 但没有用 从错误消息中可以看出,您在Select
中返回了一个匿名类型,但该方法应该返回 CountryMst
的类型 - 您对此进行过调查吗?
【参考方案1】:
错误消息在这里很好地解释了问题:
.Select(a => new a.stateId, a.stateName)
返回一个 System.Linq.IQueryable<<anonymous type: int stateId, string stateName>>
这是你不能转换为 List<AngularWebApi.Entity.Entities.CountryMst>
的东西(没有明确解释如何)。
意思是,你需要在选择中使用你的类:
.Select(a => new CountryMst
countryId = a.stateId,
countryName = a.stateName,
)
.ToList()
【讨论】:
以上是关于无法将类型“IQueryable”隐式转换为 Generic.IList' 从 EF 上下文中检索记录列表作为列表的主要内容,如果未能解决你的问题,请参考以下文章
无法将匿名类型从“System.Linq.IQueryable”转换为“System.Data.Entity.Core.Objects.ObjectQuery”
如何解决 - 无法使用Automapper将Generic.List强制转换为Linq.IQueryable?
无法将类型 ('string', 'string') 隐式转换为 System.Net.ICredentialsByHost