在C#中对字符串数组进行排序

时间:2011-01-14 07:49:56

标签: c# sorting

如何使用OrderBy函数对字符串数组进行排序?我看到我需要实现一些接口......

4 个答案:

答案 0 :(得分:6)

您可以使用。

对数组进行排序
var sortedstrings = myStringArray.OrderBy( s => s );

这将返回Ienumerable的实例。如果您需要将其保留为数组,请改用此代码。

myStringArray = myStringArray.OrderBy( s => s ).ToArray();

当你说你必须实现某些接口时,我不确定你指的是什么,但是在使用IEnumerable.OrderBy时你不必这样做。只需以lambda表达式的形式传递Func<TSource, TKey>

答案 1 :(得分:2)

OrderBy不会对现有数组进行排序。如果您需要这样做,请使用Array.Sort

OrderBy总是会返回一个 new 序列 - 当然,根据Øyvind的回答,您可以转换为数组并将引用存储在原始变量中。

答案 2 :(得分:2)

要对内部现有数组进行排序,请调用Array.Sort(theArray)

重新评论接口:你不需要在这里添加任何接口,因为string得到了很好的支持;但是对于自定义类型(您自己的),您可以实现IComparable / IComparable<T>来启用排序。如果您希望(或需要)提供排序的代码与类型本身分开,您也可以同时IComparer / IComparer<T>中进行相同的传递。 / p>

答案 3 :(得分:0)

Linq有两种(语法)方法对字符串数组进行排序。

1:

string[] sortedStrings = unsortedStrings.OrderBy(s => s).ToArray();

如果您不知道s => s的含义,则此语法使用Lambda Expressions

2:

sortedStrings = (from strings in unsortedStrings  
                 orderby strings  
                 select strings).ToArray();

此示例看起来有点像SQL语句,如果您是Linq的新手,可能更容易阅读。

在这种情况下,

ToArray()会将IOrderedEnumerable<string>转换为string[]