C#List按照某个对象里面的属性字段排序
时间: 2024-09-14 13:15:45 浏览: 48
C# List OrderBy 动态多字段排序
4星 · 用户满意度95%
在C#中,如果你想根据某个对象内部的属性字段对List进行排序,你可以使用`List<T>.Sort()`方法或者`List<T>.OrderBy()`方法。`Sort()`方法会直接在原List上进行排序,而`OrderBy()`方法则返回一个新的排序后的集合。
以下是使用`Sort()`方法和`OrderBy()`方法根据对象内部属性进行排序的例子:
使用`Sort()`方法:
```csharp
using System;
using System.Collections.Generic;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
public static void Main()
{
List<Person> people = new List<Person>()
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 }
};
// 按照年龄Age进行升序排序
people.Sort((x, y) => x.Age.CompareTo(y.Age));
// 输出排序后的结果
foreach (var person in people)
{
Console.WriteLine($"{person.Name} - {person.Age}");
}
}
}
```
使用`OrderBy()`方法:
```csharp
using System;
using System.Collections.Generic;
using System.Linq; // 需要引入System.Linq命名空间
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
public static void Main()
{
List<Person> people = new List<Person>()
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 }
};
// 使用OrderBy进行排序,返回一个新的排序后的集合
var sortedPeople = people.OrderBy(x => x.Age).ToList();
// 输出排序后的结果
foreach (var person in sortedPeople)
{
Console.WriteLine($"{person.Name} - {person.Age}");
}
}
}
```
在上面的例子中,`Person`类有两个属性:`Name`和`Age`。我们使用这两个属性来演示如何排序。注意`Sort()`方法接受一个比较器,它决定了排序的逻辑;而`OrderBy()`方法则直接使用lambda表达式来指定排序的依据。
阅读全文