IsOrderedBy 扩展方法

2024-01-10

在我的一些测试中,我需要检查列表的顺序并执行类似的操作

DateTime lastDate = new DateTime(2009, 10, 1);
foreach (DueAssigmentViewModel assignment in _dueAssigments)
{
    if (assignment.DueDate < lastDate)
    {
        Assert.Fail("Not Correctly Ordered");
    }
    lastDate = assignment.DueDate;
}

我想做的就是将其转换为 IEnumerable 上的扩展方法,以使其可重用。

我最初的想法是这样的

public static bool IsOrderedBy<T, TestType>(this IEnumerable<T> value, TestType initalValue)
{
    TestType lastValue = initalValue;
    foreach (T enumerable in value)
    {
        if(enumerable < lastValue)
        {
            return false;
        }
        lastValue = value;
    }
    return true;
}

这里明显的问题是你无法与通用值进行比较。任何人都可以建议解决这个问题的方法吗?

干杯 科林


我认为使用类似于的方法签名会更有意义OrderBy方法...

public static bool IsOrderedBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
    bool isFirstPass = true;
    TSource previous = default(TSource);

    foreach (TSource item in source)
    {
        if (!isFirstPass)
        {
            TKey key = keySelector(item);
            TKey previousKey = keySelector(previous);
            if (Comparer<TKey>.Default.Compare(previousKey, key) > 0)
                return false;
        }
        isFirstPass = false;
        previous = item;
    }

    return true;
}

然后你可以像这样使用它:

List<Foo> list = new List<Foo>();
...

if (list.IsOrderedBy(f => f.Name))
   Console.WriteLine("The list is sorted by name");
else
   Console.WriteLine("The list is not sorted by name");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IsOrderedBy 扩展方法 的相关文章

  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • Windows 窗体中的切换开关控件

    我正在设计一个拨动开关控制使用CheckBox 但目前我的控件只能画一个圆圈 如何绘制如下图所示的圆形形状 以及如何根据控件的值更改圆圈的位置以表示选中和未选中的状态 如下图所示 这是我的代码 public class MyCheckBox
  • 进入嵌入式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ScrollableControl 在整个控件周围绘制边框

    我正在构建基于的自定义用户控件ScrollableControl 现在我正在尝试在控件周围添加边框 类似于 DataGridView 的边框 我可以使用以下方法绘制边框 e Graphics TranslateTransform AutoS
  • C# SMO 远程数据库备份到本地机器

    我有一个执行 SQL 数据库备份和恢复的应用程序 这在本地计算机上运行良好 但是如果我针对另一台计算机上托管的 SQL 服务器运行此应用程序 则会出现以下错误 Microsoft SqlServer Management Smo Faile
  • 合并多边形的高效算法

    我有一个多边形列表 在这个列表中 一些多边形重叠 或者接触其他多边形 我的任务是合并所有相互重叠或接触的多边形 我有一个union执行此操作的方法 做到这一点最有效的方法是什么 我目前能想到的是循环遍历多边形列表 检查合并列表以查看该多边形
  • 如何使用平台调用编组 void*

    我需要从 dll 中包含的 C api 调用函数 函数原型如下 int func char name void value 其中指针值的内容可以引用依赖于传递的名称的任何类型 我不确定如何设置 Dll 输入端口以正确编组此 void 我一直
  • ICSharpCode.Decompiler + Mono.Cecil -> 如何为单个方法生成代码?

    我可以使用 Mono Cecil 和 ICSharpCode Decompiler 生成类型或程序集的代码 但是 如果我尝试为单个方法生成代码 我将收到错误 对象引用未设置为对象的实例 你们能给我任何关于这个的提示吗 提前感谢您的所有帮助
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 通用 lambda 的数量

    可以通过访问非泛型 lambda 的数量来推断其数量operator template
  • 是否有普遍接受的 GMP 替代方案来实现任意精度? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在寻找 BigInt 库的过程中 我发现了这篇文章 Microsoft Windows 上的 C 或
  • 通过 C++ 标头在 C++ 和 C# 中使用枚举

    我有一个用 C 编写的服务器 位于命名管道的末端 嗯 提供服务 可以发送到服务器的命令在位于头文件中的枚举中定义 enum e doThing1 e doThing2 e doLastThing 所需枚举的值被放入发送到服务器的消息的第一个
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • nVidia 和 ATI 之间的 OpenGL 渲染差异

    最近 我将 ATI 驱动程序 我使用的是 HD7970 更新为最新版本 但我的 OpenGL 项目的一些对象停止工作 更重要的是 他们适用于 nVidia 最新驱动程序 在 960m 上测试 ATI 和 nVidia 渲染管道之间有什么我应
  • GCC编译非常慢(文件大)

    我正在尝试编译一个大的 C 文件 专门用于 MATLAB mexing C 文件大约 20 MB 可用来自 GCC 错误跟踪器 https gcc gnu org bugzilla attachment cgi id 36632如果你想玩一
  • 即使没有任何转换,也违反了 C 中的严格别名?

    How can i and u i在此代码中打印不同的数字 即使i定义为int i u i 我只能假设我在这里触发了 UB 但我不知道具体是如何触发的 ideone演示 http ideone com Gcv5Xm如果我选择 C 作为语言
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe
  • System.IO.IOException:进程无法访问文件“.txt”,因为它正在被另一个进程使用

    我正在使用下一个代码来记录 Web 应用程序的错误 using StreamWriter myStream new StreamWriter sLogFilePath true myStream WriteLine string Forma

随机推荐

  • 编写我自己的 init 可执行文件

    我想创建自己的 init 并为下雪的周末带来一些 Linux 乐趣 我知道 内核使用 rootfs 启动 并在加载驱动程序和安装磁盘后将流程提供给 sbin init 我下载了ubuntu云镜像并尝试使用kvm直接启动内核 如下所示 kvm
  • Python Pandas:将具有唯一值的行连接起来

    在 Python pandas 中 我有一个大数据框 如下所示 df pd DataFrame a foo bar 3 b foo2 bar2 3 c foo3 bar3 3 d q w e r t y e q2 w2 e2 r2 t2 y
  • NHibernate 2.1 和 Oracle 10g 客户端出现错误

    我需要 NHibernate 2 1 才能与 Oracle 数据库对话 我被要求使用 Oracle 10g 客户端 尝试构建会话工厂时出现以下错误 无法转换类型的对象 Oracle DataAccess Client OracleConne
  • 如何将事件侦听器添加到对象数组

    我有一个对象数组 具体来说easelJS图片 像这样 var imageArray new Array gShape new createjs Shape shape is something imageArray push gShape
  • Cassandra 牺牲了 CAP 定理的哪一部分?为什么?

    有一个很棒的演讲 https github com strangeloop StrangeLoop2013 blob master slides sessions Kingsbury PartitionsForEveryone pdf关于在
  • 使用窗口事件调整画布元素大小

    我正在使用打字稿来绘制画布元素 我想让我的画布元素响应屏幕尺寸 这样我就可以将画布大小与父 div 元素相匹配 我试过用这个删除画布中的大小并在 css 中提供它 但这没有帮助 因为我有两个固定元素 我找到了这个已有 8 年历史的解决方案画
  • 函数组合与函数应用

    谁能给出函数组合的例子吗 这就是函数复合运算符的定义 b gt c gt a gt b gt a gt c f g x gt f g x 这表明它需要两个函数并返回一个函数 但我记得有人用英语表达了逻辑 例如 男孩是人类 gt 阿里是男孩
  • TestNG BeforeMethod 与组

    我想知道 BeforeMethod与组的用法 在http testng org javadoc org testng annotations BeforeMethod html http testng org javadoc org tes
  • 如何在 Mathematica 中为绘图添加阴影

    我想生成如下图所示的图 尽管我可以完成框架 但我不确定如何生成阴影 我想知道在 Mathematica 中对绘图中的某些区域进行着色的一般方法 请帮忙 谢谢 也许您正在寻找RegionPlot RegionPlot 1 x 2 1 y 2
  • UnicodeDecodeError:“utf-8”编解码器无法解码位置 2 中的字节 0xf1:无效的连续字节

    我是一个对使用 Python 进行机器学习感兴趣的新手 所以我从下载了一个数据集https data world nrippner ols regression challenge https data world nrippner ols
  • WCF 托管问题

    您好 我想知道是否有人可以帮助我 我一直在用头撞墙试图解决这个问题 但还没有成功 我在内部网络的远程服务器上的 IIS6 上托管了一个 WCF http systemservices ServiceManagerServices svc h
  • 如何检查 Angular 8 中的响应或状态代码以将文件上传到 S3 预签名 URL 并且 statusCode 为 200

    请求上传文件 upload file to the pre signed url const httpOptions headers new HttpHeaders Content Disposition attachment filena
  • 如何更改光标图标以表示 Google 图表上的某个区域可点击?

    我知道可以更改谷歌饼图的光标图标 但是可以针对该饼图的各个部分进行更改吗 我希望能够显示光标图标的变化 以表示谷歌图表上的区域 部门 区域可以 钻取 目前 它只是指针并在适当的位置显示超链接图标 这是我理想的情况 这有点像黑客 但我为此做了
  • 必须重写的虚函数

    考虑一个基类class Base它有一个功能virtual void foo void 这个函数的实现是在Base 即不是纯虚拟的 从此类继承时是否可以使用一种模式 即class Child public Base 迫使我重写foo 除了使
  • SQL Server Asp.Net - “登录失败”

    我无法让我的 Asp Net 应用程序在我要部署到的服务器上运行 服务器运行的是 Server 2008 R2 我在其上运行 SQL Server 2008 R2 Express 当我浏览该网站时出现错误 用户 WIN 6VLI5UDJ5R
  • 如何在 Firefox 中从 JavaScript 解析 HTML?

    在 Firefox 中解析 XmlHttpRequest 的 HTML 结果 获取 DOM 树 的最佳方法是什么 EDIT I do not有DOM树 我想获取它 XmlHttpRequest 的 responseXML 仅在结果是实际 X
  • 如何防止 Bootstrap 列从一个部分跳到另一部分或在彼此下面?

    我正在为我的项目制作推荐部分 有 4 个 div 但它们的内容不均匀 因此当我开始将屏幕的宽度拉在一起时 col sm 6他们应该像 2 2 一样排列 但是 3 号 div 跳到 4 号 div 的位置 留下一个空白空间 然后 4 号 di
  • 就性能而言,什么时候用 BufferedOutputStream 包装 FileOutputStream 才有意义?

    我有一个模块负责读取 处理字节并将其写入磁盘 字节通过 UDP 传入 在组装各个数据报后 处理并写入磁盘的最终字节数组通常在 200 字节到 500 000 字节之间 有时 字节数组在组装后会超过 500 000 字节 但这种情况相对较少
  • 摆脱科学计数法

    我需要做一些计算 但我遇到的问题是值非常低 例如 我需要得到 0 005 的 2 7 最终得到 1 3500000000000003e 4 这不是我想要的 我只需要知道如何获得这些值的准确百分比 我现在正在做的是
  • IsOrderedBy 扩展方法

    在我的一些测试中 我需要检查列表的顺序并执行类似的操作 DateTime lastDate new DateTime 2009 10 1 foreach DueAssigmentViewModel assignment in dueAssi