在C#中,OrderBy是一個LINQ(Language Integrated Query)方法,用于對集合中的元素進行排序。以下是關于OrderBy的一些常見疑問及其解答:
如何對集合進行排序?
使用OrderBy方法可以對集合中的元素進行排序。例如,如果你有一個整數列表,你可以使用OrderBy對其進行升序排序:
var numbers = new List<int> { 3, 1, 4, 1, 5, 9 };
var sortedNumbers = numbers.OrderBy(n => n);
如何對集合進行降序排序?
要對集合進行降序排序,可以使用OrderByDescending方法。例如:
var numbers = new List<int> { 3, 1, 4, 1, 5, 9 };
var sortedNumbers = numbers.OrderByDescending(n => n);
如何根據多個屬性排序?
要根據多個屬性對集合進行排序,可以在OrderBy或OrderByDescending方法中傳遞一個lambda表達式,該表達式包含多個屬性。例如:
var people = new List<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Tom", Age = 30 }
};
var sortedPeople = people.OrderBy(p => p.Age).ThenBy(p => p.Name);
在這個例子中,首先根據年齡進行升序排序,然后根據姓名進行升序排序。
OrderBy和OrderByDescending返回的是一個新的集合嗎?
是的,OrderBy和OrderByDescending方法返回一個新的IEnumerable<T>集合,而不是修改原始集合。這意味著原始集合保持不變,而新的排序后的集合需要單獨處理。
如何在排序后獲取原始集合?
如果你想在排序后獲取原始集合,可以使用LINQ的ToList或ToArray方法將排序后的集合轉換為列表或數組。例如:
var numbers = new List<int> { 3, 1, 4, 1, 5, 9 };
var sortedNumbers = numbers.OrderBy(n => n).ToList();
在這個例子中,sortedNumbers是一個新的列表,包含排序后的元素,而numbers保持不變。