2011-01-14 95 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[]

相關問題