IQueryable <t>和缺少的扩展.ToList()

时间:2017-01-25 10:01:39

标签: c# entity-framework linq linq-to-sql

对于所有简单回答重复的虔诚的人,请查看代码示例。 我有三个代码片段,第一个有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;
}

我仍然得到同样的错误。

0 个答案:

没有答案