C# 列表排序

412 阅读6分钟

与列表互动几乎是每个编码员每天都要做的事情。排序列表是我们认为最典型的列表任务之一。当涉及到原始类型和字符串时,在C#中对列表进行排序是相当简单的,但当我们制作对象的列表时,它就变得有些挑战性了。在这篇文章中,我们将介绍一些最常见的用于排序列表的C#函数。排序是一种从未经排序的项目列表中按顺序排列元素的方法。我们经常在C#程序中向列表中添加项目,然后需要在之后对它们进行排序。为此,我们使用排序函数。其他排序方法也可用于高级排序。

在Ubuntu 20.04中,C#中的列表排序有哪些。

List.Sort()方法使用给定或默认的IComparer实现或给定的Comparison委托对列表项进行比较,对List中的元素或子集项目进行排序。Sort()方法是C#中的一个内置函数,它提供了对对象列表的就地排序。因此,sort()函数被用来以升序或降序来组织一个列表。另一件需要记住的事情是sort()函数会永久地重新排列列表。

如何在Ubuntu 20.04中使用C#中的列表排序。

列表的排序可以用几种不同的方式。Sort、Reverse、ThenBy和OrderBy方法可分别用于对列表进行升序和降序排序。为了更好地理解C#编程语言中的列表排序方式,请看下面的例子。

例子1:在Ubuntu 20.04中使用C#的列表排序方法进行升序排序。

在C#中对int、double、char、string等基本类型的列表进行排序是非常简单的。我们在这里要做的就是在列表实例上使用通用列表类的Sort()函数,数据将以升序的方式动态排序。

在开始执行上述程序之前,我们已经用关键字 "using "包含了C#中所需要的库 "System "和 "System.Collections.Generic"。System.Collections.Generic "使用户能够建立强类型的集合,并提高类型安全和速度。然后,我们定义了一个 "sort_example "类并调用了它的主函数。在主函数中,我们有一个整数的列表作为 "sortList"。在Add()方法的帮助下,我们在整数列表中添加了随机数。WriteLine语句将打印整数的列表。

我们为整数列表使用了一个foreach循环,它将遍历列表中的每个整数值。foreach循环中的 "in "关键字用于在每次迭代中从列表中选择项目,并将其分配给foreach循环中创建的int类型的变量 "value"。在这之后,我们对给定的整数列表有一个sort()方法,它对列表进行升序排序。sort()方法,默认情况下,将列表组织成升序。foreach循环再次被用于对排序后的列表中的每个值进行迭代。writeLine方法将以升序显示排序后的列表。

输出显示了排序前和排序后的整数列表,如下图所示。

例子#2:在Ubuntu 20.04中使用反向方法进行降序排序。

reverse()方法是对List进行降序排序的一种有效方法。reverse()函数用于对一个列表中的所有数值进行重新排序。在下面的例子程序中,首先,我们用sort()函数将列表按升序整理。之后,用reverse()函数将列表按递减顺序排序。

我们已经包含了程序中需要的库。之后,以 "SortDescendingOrder "为名建立了这个类。该类有一个主函数,我们将一个整数列表声明为 "SortDesc"。SortDesc "包含整数列表,并通过名为Add()的方法在列表中添加随机整数值。Foreach循环在列表初始化后使用。foreach循环遍历每一个列表项,并将列表中的值分配给一个变量 "num"。

然后,我们有一个sort()方法,它默认将列表组织成升序。现在,我们使用Reverse()方法,它将整数列表按降序排序。foreach循环遍历每个降序列表。排序后的列表和降序排序后的列表将被WriteLine语句打印出来。

在下面的图片中,输出清楚地显示了排序方法和反向方法的工作情况。

例子#3:在Ubuntu 20.04中使用OrderBy方法对列表进行排序。

这是一种对列表进行升序排序的替代方法。我们只需使用OrderBy()方法调用代码块中定义的列表名称,然后传递一个参数,对照该参数对项目进行验证,就可以按升序排序。

上面的程序有一个带有公共关键字的类,被定义为 "Colors"。我们已经声明了两个整数类型的变量 "SNo","Name "被设置为字符串类型的属性。然后,我们创建了一个 "Colors "类的构造函数,并将该类成员作为一个参数传递。在构造函数的主体中,我们使用了 "this "关键字和类成员。关键字 "this "将与程序的类实例成员相关联。

之后,覆盖的ToString方法被实现,它返回给定类成员的字符串表示。我们已经创建了另一个类,"Demo",并调用了该类的主函数。在主函数中,我们为 "颜色 "类创建了三个对象,C1、C2和C3,并为它们赋值。然后我们为 "颜色 "类定义了一个列表,并将该类对象分配给它。新的列表被创建为 "sortList",它用orderBy方法持有 "colList"。在这里,我们将 "SNo "传入OrderBy方法,该方法通过 "SNo "对列表进行排序。WriteLine语句将打印OrderBy列表,列表将被分割成新的行,因为我们在字符串连接方法中有 "Environment.NewLine"。

OrderBy 列表的输出在下面的屏幕上显示为分割后的字符串。

例#4:在Ubuntu 20.04中使用ThenBy和ThenByDescending方法对列表进行排序。

对多个字段的排序是通过ThenBy和ThenByDescending扩展方法完成的。在OrderBy方法之后,调用ThenBy方法对集合按另一个字段进行升序排序。同样地,使用ThenByDescending函数实现额外的降序排序。

上面的程序有一个定义为 "ThenBymethod "的类。在类的main函数中,我们创建了一个 "Student "类的列表,在最后实现。该列表设置了 "学生 "类的 "ID "和 "Name "字段的值。然后,我们声明了一个变量 "Result",它通过OrderBy方法对列表进行排序,然后通过指定字段的ThenBy方法进行排序。

以同样的方式,我们用ThenByDescending方法对列表进行降序排序,在变量 "ResultDesc "中。foreach循环将遍历两个方法的排序列表中的每个值。在最后一个类 "Student "中,我们有一个获取和设置字段 "ID "和 "Name "的属性。

从ThenBy和ThenByDescending方法中得到以下结果。

结语。

我们在这里结束了C#列表排序的文章。在这篇文章中,我们讨论了列表排序方法的使用。我们对C#列表字符串进行了简明的介绍,然后对列表排序方法进行了精确的定义。我们解释了如何用不同的方法对C#中的列表进行排序。我们有以四种不同方式进行排序的例子的实现,如彻底排序OrderBy和ThenBy方法的升序。Reverse和ThenBydescending方法用于降序。