c# orderby常見(jiàn)疑問(wèn)

c#
小樊
81
2024-11-18 19:50:21

在C#中,OrderBy是一個(gè)LINQ(Language Integrated Query)方法,用于對(duì)集合中的元素進(jìn)行排序。以下是關(guān)于OrderBy的一些常見(jiàn)疑問(wèn)及其解答:

  1. 如何對(duì)集合進(jìn)行排序?

    使用OrderBy方法可以對(duì)集合中的元素進(jìn)行排序。例如,如果你有一個(gè)整數(shù)列表,你可以使用OrderBy對(duì)其進(jìn)行升序排序:

    var numbers = new List<int> { 3, 1, 4, 1, 5, 9 };
    var sortedNumbers = numbers.OrderBy(n => n);
    
  2. 如何對(duì)集合進(jìn)行降序排序?

    要對(duì)集合進(jìn)行降序排序,可以使用OrderByDescending方法。例如:

    var numbers = new List<int> { 3, 1, 4, 1, 5, 9 };
    var sortedNumbers = numbers.OrderByDescending(n => n);
    
  3. 如何根據(jù)多個(gè)屬性排序?

    要根據(jù)多個(gè)屬性對(duì)集合進(jìn)行排序,可以在OrderByOrderByDescending方法中傳遞一個(gè)lambda表達(dá)式,該表達(dá)式包含多個(gè)屬性。例如:

    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);
    

    在這個(gè)例子中,首先根據(jù)年齡進(jìn)行升序排序,然后根據(jù)姓名進(jìn)行升序排序。

  4. OrderByOrderByDescending返回的是一個(gè)新的集合嗎?

    是的,OrderByOrderByDescending方法返回一個(gè)新的IEnumerable<T>集合,而不是修改原始集合。這意味著原始集合保持不變,而新的排序后的集合需要單獨(dú)處理。

  5. 如何在排序后獲取原始集合?

    如果你想在排序后獲取原始集合,可以使用LINQ的ToListToArray方法將排序后的集合轉(zhuǎn)換為列表或數(shù)組。例如:

    var numbers = new List<int> { 3, 1, 4, 1, 5, 9 };
    var sortedNumbers = numbers.OrderBy(n => n).ToList();
    

    在這個(gè)例子中,sortedNumbers是一個(gè)新的列表,包含排序后的元素,而numbers保持不變。

0