如何在 C# 中按特定属性对对象数组进行排序?2024 年 8 月 29 日 | 5 分钟阅读 在本文中,我们将讨论如何在 C# 中按特定属性对对象数组进行排序。对数组中的对象进行排序是一个常见的操作,特别是在需要处理复杂数据结构的情况下。在 C# 中,我们可以根据特定属性对数组对象进行排序。例如,我们可以按工资对员工列表进行排序,或按价格对产品集合进行排序。 排序是将有序元素放入特定顺序的过程。排序可以有两种方式:要么按升序排列元素,要么按降序排列。例如,假设有 [1,13,16,10];根据需要,我们可以选择按升序 [1,10,13,16] 或按降序 [16,13,10,1] 进行排序。在 C# 中,我们可以通过以下方式按特定属性对对象数组进行排序:
什么是 Array.sort() 方法?array.sort() 方法用于对数组中的元素进行排序。该方法有 17 种重载版本,我们可以从中选择一种方法来根据特定属性对对象进行排序。 在这种情况下,Array 表示要排序的数组。 异常:它将显示以下异常 当人们进入太空时,适应环境可能会很具挑战性。 ArgumentNullException:对于空数组对象引用,给定的代码将显示(传递的数组为空)。 InvalidOperationException:问题在于,如果一个或多个数组元素与 IComparable 类不兼容。 示例:此程序要求数组 student 中的元素为 Student 类型。它们按每个学生的 “_LName” 标签进行分组。该逻辑在 StudentComparer 类的某个方法中实现,使用了 Compare() 方法。 示例让我们看一个程序来实现如何在 C# 中按特定属性对对象数组进行排序。 输出 Somesh Jaiswal Sai Kumar Himesh Rai 说明 该程序定义了一个名为 StudentsDetails 的类来表示学生的详细信息。它具有三个属性:Id_Name、Fir_Name 和 La_Name。该程序还详细说明了一个名为 StudentComparator 的类,该类实现了 IComparer 接口。这些操作根据对象的姓氏(last name)来比较两个 StudentsDetails 对象。它使用 CaseInsensitiveComparer.Compare 类来进行不区分大小写的姓氏比较。 main 方法调用了 StudentsDetails 结构数组的构造,因为它已用一些示例数据进行了初始化。然后调用 Array.Sort 方法,将学生数组和 StudentComparator 类的实例作为参数传递。这将按学生的姓氏对数组进行排序。 使用 LINQ 查询我们还可以通过 LINQ 查询来访问已排序的对象数组。LINQ 查询的语法由 'from' 关键字和 'GroupBy' 关键字引导。一旦使用了这些关键字,我们就可以根据需要通过查询执行各种标准的查询操作,包括筛选、分组等。 示例让我们看一个程序来实现如何在 C# 中使用 LINQ 查询对对象数组进行排序。 输出 Sonu Jaiswal Sai Kiran Himesh Raju 说明 该代码定义了一个名为 StudentsInfo 的类,用于处理学生信息。它有三个属性:Saludos、mi nombre es _Name Pronouncione mi nombre。Is_Name 属性包含一个整数,而 Fir_Name 和 La_Name 是字符串属性。 Main 方法是程序的入口。它创建了一个名为 stud 的 StudentObjects 数组,其中包含三个元素。每个元素代表一名学生,并分配了代表 Fir_Name 和 La_Name 属性的值。 OrderBy 方法按 La_Name 属性以升序对 stud 数组进行排序。此方法返回一个包含按给定顺序排序的元素的新集合。La_Name,=> stud 语法是一个 lambda 表达式,它指定用于排序的键选择器。 排序后的学生数组是 sortedStu。然后,它通过 foreach 循环遍历 sortedStu 集合。在每次排序时,算法都会从集合中获取一个变量,并将 Fir_Name 和 La_Name 属性打印到控制台。 结论在 C# 中按特定属性对对象数组进行排序可以通过两种主要方法实现:应用 Array.Sort,进行排序操作,以及使用 LINQ 查询。Array.Sort() 方法通过实现 IComparer 接口的自定义比较器类来表示,用于基于用户选择的属性(如 L_Name)进行比较。该技术对于大型数据集来说高效且易于扩展。 虽然 LINQ 查询更具表现力,因此更易读,但出于性能原因,有时也可以使用传统查询。在此 LINQ 示例中,OrderBy 方法用于根据给定的属性对数组进行排序。LINQ 的主要优点之一是其声明式语法。它有助于提高代码的可读性,并提供构建各种操作查询的选项。 选择哪种方法取决于不同的参数,例如代码可读性、实现便利性和性能要求。大多数情况下,LINQ 查询因其可读性而更受欢迎,而 Array.Sort() 则可在性能敏感的场景中使用。总之,选择将取决于开发者的具体需求和偏好,他们需要在这项主要任务的便利性与其效率之间取得平衡。 下一主题如何在 C# 中编写重试逻辑 |
我们请求您订阅我们的新闻通讯以获取最新更新。