如何在 C# 中按物件中的屬性對列表進行排序
Minahil Noor
2023年12月11日
本文將用 C# 程式碼介紹用物件中的屬性對列表進行排序的不同方法。
- 使用
OrderBy
方法 - 使用
delegate
在 C# 中使用 OrderBy
方法通過物件中的屬性對列表進行排序
我們將使用內建函式 OrderBy
,通過物件中的一個屬性對列表進行排序。這是 LINQ 的方法。這個方法建立一個新的列表,按照給定的屬性排序。使用該方法按屬性對一個列表進行排序的正確語法如下。
ListName.Orderby(varName => varName.property);
內建函式 OrderBy
有兩個引數。它的詳細引數如下。
引數 | 說明 | |
---|---|---|
varName |
強制 | 它是給定列表的變數名 |
property |
強制 | 這就是我們將用來給列表排序的屬性 |
下面的程式顯示了我們如何使用這個函式通過物件中的屬性對列表進行排序。
using System;
using System.Linq;
using System.Collections.Generic;
public class Flowers {
public string name;
public int priority;
public Flowers(string name, int priority) {
this.name = name;
this.priority = priority;
}
public override string ToString() {
return "[" + name + "," + priority + "]";
}
}
public class Example {
public static void Main() {
Flowers hibiscus = new Flowers("Hibiscus", 3);
Flowers rose = new Flowers("Rose", 1);
Flowers lili = new Flowers("Lili", 4);
List<Flowers> mylist = new List<Flowers>() { hibiscus, rose, lili };
List<Flowers> sorted = mylist.OrderBy(x => x.priority).ToList();
Console.WriteLine(String.Join(Environment.NewLine, sorted));
}
}
輸出:
[Rose,1]
[Hibiscus,3]
[Lili,4]
在 C# 中使用 delegate
通過物件中的一個屬性對列表進行排序
我們也可以使用自定義 delegate
來對物件中的某個屬性對列表進行排序。使用 delegate
的正確語法如下。
[access modifier]
delegate[return type][delegate name]([parameters])
下面的程式顯示了我們如何使用委託來根據物件中的屬性對列表進行排序。
using System;
using System.Linq;
using System.Collections.Generic;
public class Flowers {
public string name;
public int priority;
public Flowers(string name, int priority) {
this.name = name;
this.priority = priority;
}
public override string ToString() {
return "[" + name + "," + priority + "]";
}
}
public class Example {
public static void Main() {
Flowers hibiscus = new Flowers("Hibiscus", 3);
Flowers rose = new Flowers("Rose", 1);
Flowers lili = new Flowers("Lili", 4);
List<Flowers> mylist = new List<Flowers>() { hibiscus, rose, lili };
mylist.Sort(delegate(Flowers x, Flowers y) { return x.priority.CompareTo(y.priority); });
Console.WriteLine(String.Join(Environment.NewLine, mylist));
}
}
輸出:
[Rose,1]
[Hibiscus,3]
[Lili,4]