在 .Net 2.0 中对 IList 进行排序的最佳方法是什么?

2024-03-05

我有一个IList<T>我需要排序,如果可能的话我宁愿不复制列表。我注意到了ArrayList has an Adapter包装传递的列表而不复制它的静态方法,但这需要一个IList我有一个IList<T>。从以下位置投射是否安全System.Collections.Generic.IList<T> to a System.Collections.IList只需使用Adapter method?

请注意,这是 .Net 2.0,因此 LINQ 不是一个选项。


在 Paul Fox 的博客中,我推荐了“如何对 IList 进行排序”的文章:http://foxsys.blogspot.com/2007/06/how-to-sort-generic-ilist.html http://foxsys.blogspot.com/2007/06/how-to-sort-generic-ilist.html

以防万一该博客将来消失,我将在此处复制该帖子:


如何对通用 IList 进行排序

Update

您可以阅读并更新有关的帖子对通用 IList 和 List 进行排序 http://foxsys.blogspot.com/2008/05/how-to-sort-generic-list-sorting-list.html。许多人会更喜欢更新后的帖子中提到的方法。

对通用 IList 进行排序

我试图对通用 IList 进行排序,并找到了一种相当简单的方法。

Step 1

您需要为 IList 中包含的类型实现 IComparable。对于此示例,我将使用一个简单的 Language Dto 类。

public class LanguageDto : IComparable {
 private String name;
 public string Name { get { return name; } set { name = value; } }

 public LanguageDto(string name) {
     this.name = name;
 }

 #region IComparable Members
 public int CompareTo(object obj) {
     if (obj is LanguageDto) {
     LanguageDto language = (LanguageDto)obj;
     return this.name.CompareTo(language.name);
     }
     throw new ArgumentException(string.Format("Cannot compare a LanguageDto to an {0}", obj.GetType().ToString()));
 }
 #endregion
}

STEP 2

对 IList 进行排序。为此,您将使用传入 IList 的 ArrayList.Adapter() 方法,然后调用 Sort 方法。就像这样...

ArrayList.Adapter((IList)languages).Sort();

注意:语言的类型为“IList”

语言应该是您类型的排序列表!

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

在 .Net 2.0 中对 IList 进行排序的最佳方法是什么? 的相关文章

  • 如何让 LinqToSql 将“索引提示”传递给 sql server?

    由于我们不能相信我们的客户会更新 sql server 中的索引统计信息等 因此我们过去不得不使用索引提示 http www sql server performance com tips hints general p1 aspx 由于我
  • Sitecore - 隐藏功能区中的按钮

    我为特定内容项创建了上下文功能区 我有两个按钮 可以将项目 升级 或 降级 到某一类别 该部分只能有一个 是否可以根据某种隐藏代码中的内容状态隐藏其中一个按钮 我了解如何链接到 Click 事件 但我想知道是否有某种加载事件可供自定义功能区
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • “你好世界!!”在 .NET 4 中生成 3500 个页面错误

    我正在运行 Windows Vista 和 Visual Studio 2010 使用 NET 4 2 GB RAM 和大约 800 MB 可用空间 我创建了一个 Windows 窗体应用程序 但没有向其中添加任何代码 只需在发布模式下编译
  • 为什么当要求修剪“PRN.NUL”时,TrimStart 会更多地修剪字符?

    这是代码 namespace TrimTest class Program static void Main string args string ToTrim PRN NUL Console WriteLine ToTrim string
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 如何在C#背后的代码中动态创建数据模板并绑定TreeView分层数据

    我有一个场景 其中树视图动态更改其数据模板和数据绑定定义 我在 XAML 中创建了一个树视图 如下所示
  • 抛出并保留堆栈跟踪不符合代码分析所描述的预期

    进行代码分析给了我项目 CA2200 CA2200 重新抛出以保留堆栈详细信息 func 重新抛出捕获的异常并将其显式指定为参数 请改用不带参数的 throw 以保留最初引发异常的堆栈位置 我已经实现了该建议 但无论如何我似乎都得到了相同的
  • 时间跨度格式[重复]

    这个问题在这里已经有答案了 当您将时间跨度声明为以下形式时 如何优雅地格式化时间跨度以表示 1 小时 10 分钟 TimeSpan t new TimeSpan 0 70 0 我当然知道你可以为此做一些简单的数学计算 但我有点希望 NET
  • Winforms 中的 WPF ElementHost 最大化时崩溃 (Windows)

    我正在尝试将新的 WPF 控件集成到现有的 WinForms 应用程序中 并使用 ElementHost Dock Fill 来托管以下 XAML UserControl NET 4 当我将 WinForm 设置为最大化时 我的整个操作系统
  • 由于索引无效,无法加载计数器名称数据 -Exception

    我使用 C 和 WPF 操作系统是 windows 7 Professional 和 Visual Studio 2012 SQL Server 2012 我在wpf中使用了Devexpress Grid 我想使用 ADO Net 服务器模
  • 在 SQL 2005+ 中,CLR 存储过程是否优于 TSQL 存储过程?

    我目前的观点是否定的 更喜欢 Transact SQL 存储过程 因为它们是重量更轻且 可能 性能更高的选项 而 CLR 过程允许开发人员进行各种恶作剧 然而最近我需要调试一些写得非常糟糕的 TSQL 存储过程 像往常一样 我发现许多问题是
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur

随机推荐

  • 两个字符串所有可能的LCS(最长公共子序列)

    我们可以用DP 动态规划 求出两个字符串的LCS 最长公共子序列 通过跟踪 DP 表 我们可以获得 LCS 但如果存在不止一艘濒海战斗舰 我们怎样才能获得全部呢 Example string1 bcab string2 abc 这里 ab
  • docker nginx 容器的日志存储在主机的哪里

    I use 默认 nginx 镜像 https hub docker com nginx 和Filebeat读取日志并发送给ELK 两个容器 nginx 容器和 Filebeat 容器 都位于同一主机上 这是 nginx 镜像的 Docke
  • 卸载使用 CUDA 内存的 mex 文件时 MATLAB 崩溃

    我已经尝试解决这个问题有一段时间了 我在使用 CUDA 的 matlab Linux 64 位 中使用 MEX 文件 代码编译并执行得很好 但是当我想卸载 mex 时 例如重新编译它或当 matlab 退出时 matlab 立即崩溃 没有任
  • new File(path) 实际上总是在 android 上创建一个文件?

    我正在尝试检查 Android SD 卡上是否存在文件 所以我这样做 File f new File sdpath DATABASE NAME if f exits create new file else do something 每次实
  • 如何在弹出窗口中动态创建 HTML 元素?

    之前 我使用 window showModalDialog 函数弹出一个窗口 window showModalDialog myHtml 在 myHtml 中 有一些 html 元素 例如文本区域和两个按钮 但现在情况发生了变化 任何htm
  • 查找用户位置

    我正在尝试获取我的天气应用程序的用户位置 我目前无法这样做 并尝试遵循 Google 最后已知位置指南以及https guides codepath com android Retriving Location with LocationS
  • 通过 GitHub 发布 Webhook 触发 AWS CodePipeline

    AWS CodePipeline 现在支持 GitHub WebHook 但默认情况下每次在主分支上推送 更改 代码时 都会触发 CodePipeline 但是 我只希望它在我实际发布版本时运行 因此 我手动配置了自动生成的 GitHub
  • 设置具有多个值的本地化字符串的格式

    我创建了一个本地化字符串 其形式类似于 text key Collected d out of d 并使用以下格式化程序 let numberOfItems 2 let totalNumberOfItems 10 let format NS
  • 在R中过滤掉多列

    假设一个数据集有多个行和列 其中一些列为 0 我的意思是该列中的所有值都是 0 如何过滤掉这些列 我已尝试使用以下代码但无济于事 training data lt Filer function x all x 1 99 0 training
  • Flutter - 轻按时检测 TextField

    我在 Windows 中制作了一个 Flutter 应用程序并且一切正常 但是当我尝试编译到 iOS 时抛出了意外错误 在文本字段中检测到 onTap 不是正确的参数 我不知道会发生什么 在 Windows 中不会返回此错误 反正 有人知道
  • 设置输入高度为父级的 100%

    我在设置输入 键入文本 高度以适合 100 的父母时遇到了一些问题 td 高度 我什至尝试迭代每个输入并使用 jQuery 手动设置它的高度 但这需要相当多的时间 我正在处理的网站有很多单元格 并且仍然无法在 IE 7 和 8 上工作 我有
  • 将表单身份验证添加到 ASP.Net 项目会导致 401.2 未经授权?

    我正在尝试将表单身份验证插入到最初使用 VS 2013 和 ASP Net 4 0 使用无身份验证模板创建的 ASP Net 项目中 我已遵循 MSDN 上的建议 并将其添加到 system web 下的 Web Config 中
  • 添加资源文件到xcode

    我正在尝试将一些新的资源文件添加到由另一个人在另一台 Mac 上构建的项目中 我认为该项目有前人的规定 使用右键单击 gt 将文件添加到 MyProject 不会提供预期的结果 编译项目后 添加的文件在应用程序中不可见 如何在我的项目中添加
  • 最新的 Jersey 示例不起作用

    我已经安装了最新版本的球衣 捆绑版本 2 13 0 以及该版本的示例 然后我尝试了 用于测试 Restful 服务 examples helloworld pure jax rs src main java org glassfish je
  • JavaScript 加载图像的进度

    JS 有没有办法在加载图像时获取加载图像的进度 我想使用HTML5新的Progress标签来显示加载图像的进度 我希望有这样的东西 var someImage new Image someImage onloadprogress funct
  • MongoDB - 大量 MongoCleaner 线程

    不知何故 我的 java 应用程序与 mongodb 通信最终产生了大量名为 MongoCleanerXXX 的停放 睡眠 线程 我认为它来自驱动程序 其数量约为 600 显然数据库存在一些连接问题 在 mongod 重新启动一段时间后确实
  • 我的 httpd.conf 是空的

    我最近在 ubuntu 上安装了 apache2 但我有一个问题 我的 httpd conf 是空的 有人能给我一份 ubuntu 上 apache2 的 httpd conf 的干净副本吗 谢谢 编辑 我看到了你的答案 但在 wampse
  • 如何让dput删除多余的数据?

    我想要一个 SO 问题的最小可重现代码 我一直在使用dput droplevels head df 50 然而 df大约有 4k 条记录 看起来像dput正在为每个人打印一些东西 我需要在问题中显示两个不同的 df 所以不会让我超过 30
  • 打字稿中具有数据水合/脱水的类

    我想分享 React TS 前端和 Node TS 后端之间的 TS 类或接口 问题是 TS 类型在编译时被剥离 所以当我想将类实例转换为 JSON 时我无法使用它们 我想知道是否有任何解决方案可以在静态文件中描述我的对象 生成 TS 类
  • 在 .Net 2.0 中对 IList 进行排序的最佳方法是什么?

    我有一个IList