📅  最后修改于: 2023-12-03 15:38:13.604000             🧑  作者: Mango
在 C# 中,我们可以使用 Array.Sort()
或 List.Sort()
方法对对象数组进行排序。这些方法可以使用 Lambda 表达式或实现 IComparer<T>
接口来指定排序时所用的比较逻辑。
对于按特定属性排序的需求,我们可以通过实现 IComparer<T>
接口,或通过 Lambda 表达式来指定比较逻辑。
以下是一些示例代码,以便更好地理解如何在 C# 中按特定属性对对象数组进行排序:
IComparer<T>
接口的方式实现 IComparer<T>
接口是最基本的方式,通过实现 Compare()
方法来指定两个对象之间的排序规则。
using System;
using System.Collections.Generic;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public int Height { get; set; }
}
public class PersonComparer : IComparer<Person>
{
/* 按照 Age 属性升序排序 */
public int Compare(Person x, Person y)
{
return x.Age.CompareTo(y.Age);
}
}
public static void Main()
{
var persons = new List<Person>()
{
new Person { Name = "Alice", Age = 25, Height = 165 },
new Person { Name = "Bob", Age = 30, Height = 175 },
new Person { Name = "Cindy", Age = 22, Height = 160 }
};
/* 按照 Age 属性升序排序 */
persons.Sort(new PersonComparer());
}
使用 Lambda 表达式来排序,可以更加简洁方便地指定比较逻辑。
using System;
using System.Collections.Generic;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public int Height { get; set; }
}
public static void Main()
{
var persons = new List<Person>()
{
new Person { Name = "Alice", Age = 25, Height = 165 },
new Person { Name = "Bob", Age = 30, Height = 175 },
new Person { Name = "Cindy", Age = 22, Height = 160 }
};
/* 按照 Age 属性升序排序 */
persons.Sort((x, y) => x.Age.CompareTo(y.Age));
}
除了按照单个属性排序之外,还可以使用 LINQ 的 OrderBy()
方法进行多重排序,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public int Height { get; set; }
}
public static void Main()
{
var persons = new List<Person>()
{
new Person { Name = "Alice", Age = 25, Height = 165 },
new Person { Name = "Bob", Age = 30, Height = 175 },
new Person { Name = "Cindy", Age = 22, Height = 160 }
};
/* 先按照 Age 属性升序排序,再按照 Height 属性降序排序 */
persons = persons.OrderBy(p => p.Age).ThenByDescending(p => p.Height).ToList();
}
以上就是在 C# 中按特定属性对对象数组进行排序的一些方法与技巧。希望能对大家有所帮助。