【问题标题】:CS1061: "IEnumerable<DB-entity-model>" does not contain a definition for 'OrderByDescending()'CS1061:“IEnumerable<DB-entity-model>”不包含“OrderByDescending()”的定义
【发布时间】:2021-05-11 17:03:11
【问题描述】:

Db 模型:root/Entities/ThreadEntity.cs。

root/Data/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/Services/ThreadService.cs

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

这里出错了

CS1061:IEnumerable&lt;ThreadEntity&gt; 不包含“OrderByDescending”的定义,并且找不到接受IEnumerable&lt;ThreadEntity&gt; 类型的第一个参数的扩展方法“OrderByDescending”。

我已经在 msdn 上检查了错误代码。我错过了什么? Here 是我剩下的代码,如果有帮助的话。

【问题讨论】:

  • 检查是否有using System.Linq;
  • @arunes 是的,我愿意。这是我第一次检查。

标签: c# asp.net-mvc linq asp.net-core-5.0


【解决方案1】:

Enumerable.OrderByDescending 有 2 个类型参数:OrderByDescending&lt;TSource, TKey&gt;

当您调用 OrderByDescending&lt;ThreadEntity&gt; 时,您只传递了 1 个类型参数。方法OrderByDescending&lt;T&gt; 不存在,所以你得到一个错误。

如果要指定类型参数,则需要同时指定:OrderByDescending&lt;ThreadEntity, T&gt; 其中Tthread.Created 的任何类型。

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

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

【讨论】:

  • 我也有一个错误的属性,应该是:thread.CreatedAt。现已修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2023-03-20
相关资源
最近更新 更多