首页 > 解决方案 > 对为什么我没有可用的扩展方法感到困惑

问题描述

我正在实现一个工作单元模式(不是我的选择,我知道它被一些人认为是一种反模式)。我遇到了一个我不完全理解的情况。

我的通用回购构造函数:

this.context = context;
this.dbSet = context.Set<T>();

通用方法:

  public virtual async Task<IEnumerable<T>> All()
    {
        return await dbSet.ToListAsync();
    }

我使用它:

  var languages = await _unitOfWork.Languages.All();
        languages = languages.OrderBy(x => x.Order);

如上所示,我需要下一行以便使用 OrderBy,我不明白为什么。

第二个问题是,ToListAsync 假设返回一个列表,为什么我会得到一个 IENUMARABLE?

标签: c#asp.net-coreasynchronous.net-core

解决方案


第二个问题是,ToListAsync 假设返回一个列表,为什么我会得到一个 IENUMARABLE?

List是一个实现IEnumerable。检查“编程到接口”是什么意思?.

如上所示,我需要下一行以便可以使用 OrderBy,我不知道为什么。

_unitOfWork.Languages.All()返回 a Task,你应该得到它的解包结果IEnumerable来应用OrderBy它。

要使这项工作按您的预期进行,您应该申请OrderBy等待的结果:

(await _unitOfWork.Languages.All()).OrderBy(x => x.Order);

推荐阅读