对于所有简单回答重复的虔诚的人,请查看代码示例。 我有三个代码片段,第一个有IQueryable错误,第二个没有,这是令人惊讶的,因为var被转换为IQueryable,所以我自然地重写了第一个函数以匹配有效的代码,如可以在第三个代码块。猜猜是什么,错误仍然存在。
我有以下功能:
public IList<IWebStuff> GetStuffById(int Id, string sortField)
{
IQueryable<WebStuff> results = from e in Entities.WebStuff
where e.Id == Id
select e;
switch (sortField)
{
case "FieldName1":
if (sortDirection == "asc") results = results.OrderBy(e => e.TicketNumber);
if (sortDirection == "desc") results = results.OrderByDescending(e => e.TicketNumber);
break;
case "FieldName2":
etc....
}
// convert IQueryable to List of Type IWebStuff
var rtn = results.ToList<IWebStuff>(); // Conversion error at this line
return rtn;
}
我收到以下错误:
&#39; IQueryable的&#39;不包含&#39; ToList&#39;的定义和 最好的扩展方法是重载 &#39; Enumerable.ToList(IEnumerable的)&#39;需要一个 接收器类型&#39; IEnumerable&#39;
我搜索了SO并发现上述解决方案主要涉及将IQueryable转换为某种类型的List。
我尝试了这些,但错误仍然存在。
我有另一个函数编码为:
public IList<IDocPod> GetPodByText(string p_SearchString, int p_UserId, string sortField, string sortDirection)
{
var retval = from e in Entities.WebDocs
where e.DocRef == p_SearchString && e.UserId == p_UserId
select pod;
// Code removed
return retval.Take(5000).ToList<IDocPod>();
}
此功能正常,没有错误。
所以我重新创建了第一个函数;
public IList<IWebStuff> GetStuffById(int Id, string sortField)
{
var results = from pod in Entities.WebRelatedDocuments
where pod.DocumentId == docId
select pod;
var retval = results.ToList<IWebStuff>();
.......code removed
return retval;
}
我仍然得到同样的错误。