[英]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.