C# list 按 对象 属性 排序
时间: 2023-09-28 07:11:18 浏览: 95
可以使用 `List<T>` 的 `Sort` 方法结合 `Comparison<T>` 委托来实现按对象属性排序。
假设有一个名为 `Person` 的类,属性为 `Id` 和 `Name`,我们想要按照 `Id` 属性排序,则可以使用以下代码:
```csharp
List<Person> peopleList = new List<Person>();
// 添加元素到列表
peopleList.Add(new Person { Id = 2, Name = "Tom" });
peopleList.Add(new Person { Id = 1, Name = "Jerry" });
peopleList.Add(new Person { Id = 3, Name = "Lucy" });
// 按照 Id 属性排序
peopleList.Sort((p1, p2) => p1.Id.CompareTo(p2.Id));
// 遍历排序后的列表
foreach (Person p in peopleList)
{
Console.WriteLine($"Id: {p.Id}, Name: {p.Name}");
}
```
输出结果为:
```
Id: 1, Name: Jerry
Id: 2, Name: Tom
Id: 3, Name: Lucy
```
如果想要按照 `Name` 属性排序,则只需要将比较函数中的 `p1.Id.CompareTo(p2.Id)` 改为 `p1.Name.CompareTo(p2.Name)` 即可。
相关问题
c# list数组根据对象的属性排序
C是一门广泛流行的编程语言,诞生于上个世纪70年代,由丹尼斯·里奇发明,是由贝尔实验室研究开发的操作系统Unix的高级语言。C语言的设计初衷是为了更好地控制底层的硬件资源,可以生成与原始机器指令相当高效的代码。也正是由于它的高效性和可控性,C语言成为了越来越多领域的首选语言,除了在操作系统、网络通信、驱动程序等领域,C语言还广泛应用于游戏开发、金融交易系统、科学计算等许多领域。
C语言有着简单的语法结构,是一门面向过程的编程语言。它的语法严谨,程序源代码较轻量,运行效率高。C语言具有丰富的算术、逻辑运算,可以很好地控制位、字节、字等硬件资源。因此,C语言在处理复杂任务、构建高端软件时,表现出色,广受开发者喜爱。
不仅如此,C语言也具有跨平台特性,它可以编写跨平台的程序,在不同的操作系统上运行。在今天的编程语言中,C语言有着重要的地位,许多其他编程语言都是在其基础上发展而来的,如C++、Java等,甚至现在热门的Python语言也是通过C语言编写而成的。
总之,C语言是一门重要的编程语言,它在计算机科学领域中发挥了举足轻重的作用。对于想要成为软件开发工程师的人来说,学习并熟练掌握C语言是非常必要的。
C#List按照某个对象里面的属性字段排序
在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表达式来指定排序的依据。
阅读全文