CS1061:"IEnumerable<DB-entity-model>" 不包含 'OrderByDescending()' 的定义

CS1061: "IEnumerable<DB-entity-model>" does not contain a definition for 'OrderByDescending()'

数据库模型:root/ Entities/ ThreadEntity.cs .

root/数据/IThreadEntity.cs

IEnumerable<ThreadEntity> GetLatestThreads(int amount); // to get/ load at once.

root/ Controllers/ ThreadController.cs , HomeController.cs 等

在后者中:

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;
    private readonly IThreadEntity _threadEntityService;

    public HomeController(ILogger<HomeController> logger, IThreadEntity threadEntityService)
    {
        _logger = logger;
        _threadEntityService = threadEntityService;
    }

    private HomeIndexModel BuildHomeIndexModel()
    {
        var latestThreads = _threadEntityService.GetLatestThreads(amount: 10);
        //...
    }
//...
}

root/服务/ThreadService.cs

public class ThreadService : IThreadEntity
{
//...
    public IEnumerable<ThreadEntity> GetLatestThreads(int amount)
    {
        return GetAll().OrderByDescending<ThreadEntity> (thread => thread.CreatedAt).Take(amount);
    }
//...
}

这里出现错误

CS1061: IEnumerable<ThreadEntity> does not contain a definition for 'OrderByDescending' and no extension method 'OrderByDescending' accepting a first argument of type IEnumerable<ThreadEntity> could be found.

我已经在msdn上查看了错误代码。我错过了什么? 如果有帮助,Here 是我的其余代码。

Enumerable.OrderByDescending 接受 2 个类型参数:它是 OrderByDescending<TSource, TKey>.

当您调用 OrderByDescending<ThreadEntity> 时,您只传递了 1 个类型参数。方法 OrderByDescending<T> 不存在,因此您遇到错误。

如果要指定类型参数,则需要同时指定两者:OrderByDescending<ThreadEntity, T> 其中 Tthread.Created 的任何类型。

但是,C# 编译器擅长推断类型参数,因此您应该能够编写:

return GetAll().OrderByDescending(thread => thread.Created).Take(a);