亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#Sort和OrderBy比較

C#Sort和OrderBy比較

慕的地6264312 2019-10-29 13:14:48
我可以使用Sort或OrderBy對列表進行排序。哪一個更快?兩者都在使用相同的算法嗎?List<Person> persons = new List<Person>();persons.Add(new Person("P005", "Janson"));persons.Add(new Person("P002", "Aravind"));persons.Add(new Person("P007", "Kazhal"));1。persons.Sort((p1,p2)=>string.Compare(p1.Name,p2.Name,true));2。var query = persons.OrderBy(n => n.Name, new NameComparer());class NameComparer : IComparer<string>{    public int Compare(string x,string y)    {      return  string.Compare(x, y, true);    }}
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

不,它們不是相同的算法。對于初學者,LINQ OrderBy被記錄為穩定的(即,如果兩個項目相同Name,則它們將以其原始順序出現)。


它還取決于您是否對查詢進行緩沖還是對其進行多次迭代(除非對結果進行緩沖,否則LINQ-to-Objects將對per重新排序foreach)。


對于OrderBy查詢,我也很想使用:


OrderBy(n => n.Name, StringComparer.{yourchoice}IgnoreCase);

(對{yourchoice}之一CurrentCulture,Ordinal或InvariantCulture)。


List<T>.Sort


此方法使用Array.Sort,后者使用QuickSort算法。此實現執行不穩定的排序;也就是說,如果兩個元素相等,則可能不會保留其順序。相反,穩定排序保留了元素相等的順序。


Enumerable.OrderBy


此方法執行穩定的排序;也就是說,如果兩個元素的鍵相等,則保留元素的順序。相反,不穩定排序不會保留具有相同鍵的元素的順序。分類; 也就是說,如果兩個元素相等,則可能不會保留其順序。相反,穩定排序保留了元素相等的順序。


查看完整回答
反對 回復 2019-10-29
  • 3 回答
  • 0 關注
  • 1559 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號