2011-01-14 103 views

回答

6

您可以使用排序数组。

var sortedstrings = myStringArray.OrderBy(s => s); 

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

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

我不知道你指的是当你说你要实现一些接口是什么,但你没有使用IEnumerable.OrderBy时,要做到这一点。只需以lambda表达式的形式传递Func<TSource, TKey>即可。

+0

好的,但什么是“s”? – aharon 2011-01-14 07:53:54

+0

@aharon:这是lambda表达式的参数。如果你要学习LINQ,你需要了解各种功能,从C#3 – 2011-01-14 07:54:49

2

OrderBy将不到位现有数组排序。如果您需要这样做,请使用Array.Sort

OrderBy总是返回序列 - 这当然也可以转换成一个阵列和存储参考原始变量,按岛之风的答案。

2

要对进行排序现有阵列请致电Array.Sort(theArray)

再在接口上您的评论:您不需要在这里添加任何的接口,因为string是很好的支持;但对于定制类型(你自己),你可以实现IComparable/IComparable<T>启用排序。您可以做一个IComparer/IComparer<T>一样传球,如果你希望(或需要),提供了排序是不同的类型本身的代码。

0

LINQ的具有两个(语法)的方式来排序字符串数组。

1:

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

此语法使用Lambda Expressions,如果你不知道什么s => s手段。

2:

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

这个例子看起来有点像一个SQL语句,可能是更容易阅读,如果你是新的LINQ。

ToArray()在这种情况下将IOrderedEnumerable<string>转换为string[]

相关问题