[C#] 清單<> OrderBy按字母排序


Answers

你是否需要對列表進行排序,或者只是列表中內容的有序序列? 後者更容易:

var peopleInOrder = people.OrderBy(person => person.LastName);

要進行排序,您需要一個IComparer<Person>或一個Comparison<Person> 。 為此,您可能希望考慮MiscUtil ProjectionComparer

(我知道我一直帶著MiscUtil--它只是保持相關......)

Question

我在Framework 3.5上使用C#。 我正在尋找快速排序通用List<> 。 為了這個例子,我們可以說我有一個具有姓氏屬性的Person類型列表。 我將如何使用lambda表達式對此列表進行排序?

List<Person> people = PopulateList();
people.OrderBy(???? => ?????)



你可以使用linq :)使用:

System.linq;
var newList = people.OrderBy(x=>x.Name).ToList();



對我來說這個有用的虛擬指導 - 在通用列表中排序 -工作。 通過非常全面和清晰的解釋和簡單的例子,它可以幫助你理解4種方法(超負荷)來完成這項工作

  • List.Sort()
  • List.Sort(通用比較)
  • List.Sort(通用IComparer)
  • List.Sort(Int32,Int32,通用IComparer)



你也可以使用

model.People = model.People.OrderBy(x => x.Name).ToList();