簡體   English   中英

在C#中對字符串數組進行排序

[英]Sort an array of strings in C#

如何使用OrderBy函數對字符串數組進行排序? 我看到我需要實現一些接口......

您可以使用排序數組。

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

這將返回一個Ienumerable實例。 如果需要將其保留為數組,請改用此代碼。

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

當你說你必須實現一些接口時,我不確定你指的是什么,但是在使用IEnumerable.OrderBy時你不必這樣做。 只需以lambda表達式的形式傳遞Func<TSource, TKey>

OrderBy不會對現有數組進行排序。 如果需要,請使用Array.Sort

OrderBy總是返回一個序列 - 根據Øyvind的答案,當然你可以轉換為數組並在原始變量中存儲引用。

現有數組內部進行排序,請調用Array.Sort(theArray)

重新評論接口:你不需要在這里添加任何接口,因為string得到很好的支持; 但對於自定義類型(您自己的),您可以實現IComparable / IComparable<T>以啟用排序。 可以在同一個傳球IComparer / IComparer<T>如果你希望(或需要),提供了排序是不同的類型本身的代碼。

Linq有兩種(語法)方法來對字符串數組進行排序。

1:

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

如果您不知道s => s含義,則此語法使用Lambda表達式

2:

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

此示例看起來有點像SQL語句,如果您是Linq的新手,可能更容易閱讀。

在這種情況下, ToArray()IOrderedEnumerable<string>轉換為string[]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM