如何使用OrderBy
函数对字符串数组进行排序?我看到我需要实现一些接口......
答案 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[]
。