为什么 List 不实现 IOrderedEnumerable

2024-02-12

我想使用有序枚举,并使用接口作为返回类型而不是具体类型。我需要返回一组有序的对象。但是,当使用IList<T>执行我无法返回IOrderedEnumerable<T>, as IList<T>不继承IOrderedEnumerable<T>.

In the example下面我有一个带有系列存储库的视图模型,作为List<T>系列对象,因为它们驻留在List<T>,下令。在一个访问器方法中,我想返回一系列的过滤集,其中仅返回特定类型的系列对象,同时保持过滤元素之间的原始顺序。

/// <summary>
/// Represents the view model for this module.
/// </summary>
public class ViewModel : AbstractViewModel
{
    /// <summary>
    /// Gets the series repository.
    /// </summary>
    /// <value>The series repository.</value>
    public IList<ISeries> SeriesRepository { get; private set; }

    //...
}

//8<-----------------------------

    /// <summary>
    /// Gets the series of the specified type.
    /// </summary>
    public IOrderedEnumerable<T> Series<T>() where T : ISeries
    {
        return ViewModel.SeriesRepository.OfType<T>(); //compiler ERROR
    }

编译器告诉我:

Error   14  Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<T>' to 'System.Linq.IOrderedEnumerable<T>'. An explicit conversion exists (are you missing a cast?) ...

我如何支持这样的场景?为什么 List 不实现 IOrderedEnumerable?

EDIT:澄清我的意图:我只是想在接口级别声明我的存储库有一个顺序,即使它没有由键明确指定。 因此,.ThenBy等人。不应添加新订单,因为已经有一个 - 我自己的一个,也是唯一一个。 :-)。我明白了,就像这样,我怀念的意图.ThenBy.


How could List<T>实施IOrderedEnumerable<T>?它必须提供一种创建随后的订购...这是什么意思?

考虑一下:

var names = new List<string> { "Jon", "Holly", "Ash", "Robin", "William" };
var ordered = names.ThenBy(x => x.Length);

那有什么意思?没有primary排序顺序(如果我使用的话就会有names.OrderBy(x => x)),所以不可能强加中学排序。

我建议你try创建您自己的实现IOrderedEnumerable<T>基于一个List<T>- 当您尝试实施CreateOrderedEnumerable方法,我想你会明白为什么它不合适。你可能会发现我的Edulinq 博客文章IOrderedEnumerable<T> http://codeblog.jonskeet.uk/2011/01/04/reimplementing-linq-to-objects-part-26a-iorderedenumerable/ useful.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 List 不实现 IOrderedEnumerable? 的相关文章

  • 对静态成员变量的未定义引用

    我有一个有静态成员的类 它也是我的程序中其他几个类的基类 这是它的头文件 ifndef YARL OBJECT HPP define YARL OBJECT HPP namespace yarlObject class YarlObject
  • 如何动态加载包含非托管代码的原始程序集?(绕过“无法验证的代码失败策略检查”异常)

    我将举一个使用的例子系统 Data SQLite DLL http sqlite phxsoftware com 这是一个包含非托管代码的混合程序集 如果我执行这个 var assembly Assembly LoadFrom System
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 在调用堆栈中看到大量 clr!CLR Semaphore::Wait

    我们看到很多像下面这样的调用堆栈 我可以知道什么条件 情况会发生这种情况吗 OS Thread Id 0x48654 559 Current frame ntdll NtWaitForSingleObject 0xa Child SP Re
  • 使用预编译头减少 clang 编译时间

    我正在开发一个数据库项目 该项目将查询 以某种高级语言表示 编译为 C 代码 这段代码由数据库编译并执行 那部分工作得很好 现在 我正在尝试减少 C 查询代码的编译时间 我想知道是否可以使用预编译头来提高性能 该查询被转换为一个名为 Que
  • Confuser .NET 混淆器。安全吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在开发一个应用程序 其中阻止用户反编译代码非常重要 现在 我意识到 如果由经验丰富的程序员执行 大多数 exe 都是可反编译的
  • 使用 size_t 值反向遍历向量

    我想以相反的方向遍历向量的值 如您所知 向量的大小为 size t 当我使用以下代码时 for size t r m size 1 r gt 0 r x r f r for size t c r 1 c lt m size c x r m
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • 捕获另一个进程未处理的异常

    我想知道我是否可以捕获我开始使用 Process Start 的另一个进程抛出的未处理的异常 我知道我可以用这个捕获标准错误link http social msdn microsoft com Forums en US csharpgen
  • 如何填充两个样条线或直线系列之间的区域

    我有这个Chart 如何填充两个之间的区域Series S0 and S1 说蓝色和黄色Series 为此 我们编写了其中之一Paint事件 这里的ValueToPixelPosition https msdn microsoft com
  • ASP.NET MVC 路由 - 向路由添加 .html 扩展名

    我对 MVC 和路由非常陌生 我被要求修改一个应用程序以使用不同的 url 由于我没有经验 这项任务对我来说有点困难 好吧 让我们谈谈一些代码 routes MapRoute CategoryBySeName Route name prod
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 非静态类中的静态方法和静态类中的静态方法有什么区别?

    我有两个班级A级和B级 static class ClassA static string SomeMethod return I am a Static Method class ClassB static string SomeMeth
  • EWS - 给予预约,获取预约的所有者副本

    在 EWS 中进行预约后 是否可以获得所有者的副本 例如 如果我登录为user1 我有user1创建的约会的副本user2 我有冒充权 我要编辑user2预约的副本 我怎样才能获得user2 s copy 您可以使用 PidLidClean
  • 参数数量在编译时确定的 Lambda 函数

    我想声明一个带有 N 个参数的 lambda 函数 其中 N 是模板参数 就像是 template
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • 如何在 Winform DataGridView 中创建不同的单元格格式

    我有一个 DataGridView 我将其绑定到 DataTable DataTable 是一个全数字值 要求 DataGridView 中的每 n 行都包含文本 而不是数值 以便在视觉上为用户分隔部分 我很高兴在绑定后将此文本数据放入 D
  • C# amo 获取角色完整

    我正在开发一个 SSAS 项目 其中除其他事项外 我需要获取 C 中表格多维数据集的完整用户列表 目前我让它以这样的方式工作 我可以获得角色 但数据不完整 当我调用 Server Database Roles 为了便于阅读而简化 属性并枚举
  • 类模板的 C++ 静态成员 - 链接器警告“多重定义”[重复]

    这个问题在这里已经有答案了 假设出于某种原因 我想要一个类模板 MyTemp 和一些静态数据成员 smDummyVar Mytemp h ifndef MY TEMP H define MY TEMP H template

随机推荐

  • vue Express上传多个文件到亚马逊s3

    我需要有关如何在亚马逊 S3 上上传多个文件图像的帮助 我假设我有三个这样的输入
  • 聚合实体框架中的 List Code First

    我最初在聚合中使用 Enum 这对我来说工作得很好 但现在当我将属性更改为 List 时 我发现这些值没有在数据库中保存或检索 我认为 CodeFirst 会创建一个单独的表并映射其中的行 但事实并非如此 值既不被存储也不被检索 Agg p
  • 在不同数量的行上重复计算 fft

    我有兴趣计算矩阵第一行的 fft 但我事先不知道需要多少行 我需要重复执行此操作 但需要转换的行数可能会改变 我将用下面的例子来说明 假设我有一个 100 x 128 的数组 如果我在每一行上计划一维 fft FFTW 会生成以下计划 df
  • 不使用 GUI 发送电子邮件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有任何框架可以让我在不通过 GUI 的情况下发送电子邮件 Add this https githu
  • 需要来自 swagger codegen 的注释

    我需要一种方法来注释我的 openapi 3 规范 以便 swagger codegen 向我的 java 类添加注释 例如 JsonIgnoreProperties ignoreUnknown true 那可能吗 TIA 看来您可以利用胡
  • 通过 WebJobs 重新排队或删除 Azure 存储队列中的消息

    我希望有人能够澄清有关 Azure 存储队列及其与 WebJobs 交互的一些事情 要执行重复的后台任务 即添加到队列一次 然后以设定的时间间隔重复 是否有一种方法可以更新 QueueTrigger 函数中传递的相同消息 以便可以扩展其租约
  • 如何使用OpenCV的重映射功能?

    这是 remap 最简单的测试用例 import cv2 import numpy as np inimg np arange 2 2 reshape 2 2 astype np float32 inmap np array 0 0 0 1
  • 制作独特数组的最快方法是什么?

    我有以下情况 我有一大堆随机字符串 应尽快使该数组变得唯一 现在通过一些基准测试我发现 ruby 的 uniq 相当慢 require digest require benchmark make a nice random array of
  • wordpress 上的 $(window).height() 数量太大

    我正在创建工具提示的动态位置 我先在 jsfiddle 上测试了代码 然后再将我的代码放入我的网站 在本地主机上使用 wordpress 构建 在 jsfiddle 上我的脚本可以工作 但是当我将代码放入我的网站时 它不起作用 在 Chro
  • 将数据传递到 Laravel 视图

    刚刚进入 MVC 框架 我尝试使用刀片模板引擎将数据传递到我的视图 这是我的路线文件 Route get PagesController index 我的页面控制器
  • 绘图上可缩放、可拖动的框可以选择数据

    这是设置 我有一个数据图形图 我试图找出是否可以尝试在图形上放置一个可以移动和更改宽度的框 并返回一些值 例如曲线下的百分比和面积 它看起来像这样 关于从哪里开始有什么建议吗 我的感觉是 使用更多 GUI 界面而不是标准绘图可能是可行的 我
  • 在自定义类上创建字典样式的集合初始值设定项[重复]

    这个问题在这里已经有答案了 可能的重复 自定义集合初始化器 https stackoverflow com questions 2495791 custom collection initializers 我有一个简单的 Pair 类 pu
  • 如何增加 Tensorflow 中的变量?

    当尝试在 Tensorflow 中使用主管时 我意识到 您的训练操作负责增加全局步值 参考 https github com tensorflow tensorflow blob master tensorflow g3doc how to
  • 如何在 MVC 4 中将 List 传递给控制器

    我有 2 个模型 问题和答案 如下所示 我想将列表模型发送到视图 并且在提交表单时 我将列表模型提交到控制器 但在 Action UpdateQuestion 中只能获取问题列表 但只能获取问题列表答案是否定的 您能解释一下并告诉我如何在提
  • 在Python中迭代图像所有像素的最快方法

    我已经将图像读取为数组 import numpy as np from scipy import misc face1 misc imread face1 jpg 面 1 的尺寸为 288 352 3 我需要迭代每个像素并填充y在训练集中我
  • 如何在运算符处分割字符串

    我正在用 Java 创建一个计算器 如果我让用户输入一个字符串 例如 7 4 18 3 2 到目前为止 我必须让用户在每个数字或运算符之间输入一个空格 我如何从给定的字符串创建一个数组 其中字符串按数字或运算符拆分 因此在这种情况下数组将是
  • 错误:警告:从空值创建默认对象

    我第一次发帖 我希望有人能帮助我解决周三出现在我的网站上的这个错误 我不知道如何纠正它 因为我从未接触过 php 文件 如果我能得到一些帮助 我将非常感激 出现错误的网站位于页面顶部 http www inkedkoidesigns ca
  • 如何安装 QtWebKit 插件

    我正在运行 Qt 4 5 商业快照 并希望在我的应用程序中使用我下载的插件 它是一个 so 文件 QWebView 我需要放置此文件的特定位置吗 我可以使用QWebPluginFactory 我假设这里的插件是 NPAPI 插件 例如 Fl
  • 无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?

    我有一个 C 应用程序 它调用使用证书进行身份验证的 Web 服务方法 该代码有效 因为当它安装在服务器 A 没有代理 上时 它会进行身份验证 当我在客户端站点的服务器 B 上安装代码时 它安装在代理后面 我确实尝试了几乎所有方法 但我不断
  • 为什么 List 不实现 IOrderedEnumerable

    我想使用有序枚举 并使用接口作为返回类型而不是具体类型 我需要返回一组有序的对象 但是 当使用IList