C# 使用元组对 List<> 进行排序?

2023-11-27

我需要按发布日期对 MediaItem 对象的 List 进行排序...发布日期不是该项目的属性。所以我最初的意图是暂时附加一个发布日期属性,加载它们,排序,然后放弃该属性。我工作中的某人建议我使用 Tuple 并使用 LINQ 进行排序...我已经在我的代码片段测试中完成了这一点,填充了 List...但我不确定如何使用该日期属性进行排序LINQ。我会继续寻找,但如果有人能提供任何帮助,我将不胜感激。谢谢。

List<Tuple<MediaItem, DateTime>> list = new List<Tuple<MediaItem, DateTime>>();

            for (int i = 0; i <= 10; i++)
            {
                DateTime date = new DateTime(2011, i, 1);
                MediaItem item = new MediaItem();
                list.Add(new Tuple<MediaItem, DateTime>(item, date));
            }

您可以使用OrderBy( )LINQ 运算符执行排序;它允许您传递一个函数来提取要排序的元素。由于元组的第二个成员是日期,因此我们按Item2.

var result = list.OrderBy( x => x.Item2 ).ToList();

您可以使用以下命令反转 LINQ 中的顺序OrderByDescending()而不是`OrderBy()。

另请注意,您必须具体化结果或迭代它们,因为OrderBy()方法默认是惰性的。上面的示例具体化了列表的副本。

如果您想就地对列表进行排序(而不是创建新列表),您可以提供Comparison<T>委托给Sort() method.

 list.Sort( (a,b) => a.Item2.CompareTo(b.Item2) );

然而,你可以做得更好 - 如果你总是想按排序顺序维护列表,你可以使用排序列表类而不是...但是你必须实现一个自定义IComparer<Tuple<MediaItem, DateTime>>在这种情况下。在这种情况下,当您添加项目时,它们将始终按排序顺序维护。

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

C# 使用元组对 List<> 进行排序? 的相关文章

随机推荐

  • 在 Android 中按主页按钮后应用程序被杀死时未打开主活动

    在我的应用程序中 活动 A 是启动器活动 从 A 称为 B 从 B 称为 C 我有超过 5 个活动 在 C 中 当我按下主页按钮 并再次打开我的应用程序时 它会打开 C 这对我来说没问题 但是在按下 C 中的主页按钮后 当它空闲一段时间并且
  • System.exit(0) 没有关闭我的所有活动? [复制]

    这个问题在这里已经有答案了 我有 2 个活动 因此活动 1 转到活动 2 然后在活动 2 上我有一个退出按钮 但是当我点击它时 它只退出了活动2并再次返回到活动1 基本上感觉就像我刚刚再次启动应用程序一样 我不知道为什么 这是我的代码 Bu
  • 在两个 WAR 之间共享应用程序上下文?

    有没有办法在两个部署的战争之间共享应用程序上下文 一场战争需要连接另一场战争的服务 我不知道从哪里开始 我们的团队有相同的要求 在 Tomcat 中的多个 WAR 之间共享 Spring bean 老实说 诸如 不要这样做 之类的答案没有帮
  • 张量流:使用队列运行器有效地馈送评估/训练数据

    我正在尝试运行张量流图来训练模型并使用单独的评估数据集定期进行评估 训练和评估数据都是使用队列运行器实现的 我当前的解决方案是在同一个图中创建两个输入并使用tf cond依赖于一个is training占位符 我的问题通过以下代码突出显示
  • 如何从命令提示符使用 mysqldump 添加日期和时间以及备份文件名称并定义备份文件的路径

    我使用此命令从 mysqldump 进行备份 mysqldump uroot ptrackerdb alldatabases gt test sql 现在我想用我的备份文件添加日期时间 例如当前日期和时间 例如 test 25July201
  • 常见的 Haskell 运算符有可发音的名称吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我正在阅读为大善而学 Haskell 而且我从来不知道 Haskell 运算符
  • ElementClickInterceptedException:消息:元素单击被拦截:元素

    我试图单击 所有主题 和 所有状态 复选框 然后搜索结果 当我运行脚本时 会打开一个大小为 1036x674 的 Chrome 窗口 如果我不理会窗口 则会出现元素单击拦截错误 如果我最小化或最大化窗口 我的脚本就可以正常工作 我正在使用
  • 如何在 python 中的活动连接上启动 TLS?

    以下是我当前在端口 587 上连接到 gmail 的 smtp 服务器的代码 发出 STARTTLS 命令后 我如何完成 TLS 会话协商并开始发出 AUTH LOGIN 和 MAIL FROM 等命令 我省略了 Base64 编码的 gm
  • TestCoroutineDispatcher 和 TestCoroutineScope 均不处理协程测试异常

    使用这个manual测试协程 编写预期抛出异常的测试会导致崩溃 而不是通过测试 我想知道我做错了什么 private val testDispatcher TestCoroutineDispatcher Before fun setup p
  • Python 中的区域交集

    我有一个代码 它采用条件 C 作为输入 并将问题的解决方案计算为 x y 空间上的 允许区域 A 该区域由多个 管 组成 这些 管 由两条永远不会交叉的线定义 我要寻找的最终结果必须满足 k 个条件 C1 Ck 因此是 k 个区域 A1 A
  • 嵌入式环境中的STL

    我是一名 C 程序员 多年来一直听到这样的说法 STL 是not good用于嵌入式环境 因此通常禁止在基于嵌入式环境的项目中使用 我相信像 Boost 这样的 STL 库要强大 得多 并且提供更快 更少出错的开发方式 当然 语法有点吓人
  • iPhone + Twitter API:转换时间?

    有没有一种简单的方法可以将从 twitter 获得的时间戳转换为 UNIX 时间或从现在起的分钟数 我可以解析字符串并自己转换所有内容 但我希望有一种不需要这样做的转换方法 以下是带有时间戳的created at 元素的示例 2007 年
  • android c2dm注册ID

    我阅读了 Android Cloud to Device Messaging Framework 中的解释 当我们的应用程序成功注册到 C2DM 服务器后 我们会收到一个注册 ID 注册 ID 一直有效 直到应用程序明确取消注册 或者直到
  • 软键盘不存在,无法隐藏键盘 - Appium android

    我收到以下异常 org openqa selenium WebDriverException An unknown server side error occurred while processing the command Origin
  • Postgres UTF-8 字符排序

    我正在构建一个小型应用程序 其中包含数据库中的世界语单词 因此我有 apelojn 和 brakhorlo o 等带有 特殊 字符的单词 使用 PostgreSQL 9 4 4 我有一个words具有以下架构的表 lingvoj dev d
  • 无法通过 Lambda 中的 VPC 端点访问 S3

    我的 VPC 中有一个 Lambda 函数 我想访问 S3 存储桶 我认为我已经正确设置了 S3 VPC 端点 因为我在与 Lambda 函数相同的子网和安全组中创建了一个 EC2 实例 当我运行 Lambda 函数代码的副本时在EC2实例
  • Dapper 不会与具有自定义 getter/setter 的成员一起使用吗?

    根据我正在使用的一些代码 情况似乎如此 我在其中找不到任何内容简洁的文档明确表示它不适用于具有自定义获取 设置逻辑的成员 但我确实看到了这个示例 public class Dog public int Age get set public
  • 为nodejs创建验证码

    我正在尝试在网站的注册页面上放置验证码 如何在 Node js 中显示验证码 我找到了一个用纯js编写的聪明的 验证码 Features 只生成数字验证码PNG图像 内置字体 字符上下 左右限位 随机位移 完整的 JavaScript 它会
  • 无法识别的选择器发送到实例 NSTimer Swift

    我正在尝试开发一个包含简单秒表功能的应用程序 我正在使用 Xcode 6 和 Swift 语言 这是 FirstViewController 中的代码 IBAction func Stopwatch Sender UIButton var
  • C# 使用元组对 List<> 进行排序?

    我需要按发布日期对 MediaItem 对象的 List 进行排序 发布日期不是该项目的属性 所以我最初的意图是暂时附加一个发布日期属性 加载它们 排序 然后放弃该属性 我工作中的某人建议我使用 Tuple 并使用 LINQ 进行排序 我已