C# 中的 DistinctBy
是一個 LINQ 方法,用于從集合中刪除重復項,同時保持元素的順序。它接受一個 lambda 表達式作為參數,該表達式用于確定集合中的唯一元素。以下是一些 DistinctBy
的常見用法:
刪除列表中的重復項:
var list = new List<int> { 1, 2, 2, 3, 4, 4, 5 };
var distinctList = list.DistinctBy(x => x);
Console.WriteLine(string.Join(", ", distinctList)); // 輸出: 1, 2, 3, 4, 5
根據屬性刪除重復項:
假設有一個 Person
類,其中包含 Name
和 Age
屬性:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
可以使用 DistinctBy
根據 Name
屬性刪除重復項:
var people = new List<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Alice", Age = 30 }
};
var distinctPeople = people.DistinctBy(p => p.Name);
Console.WriteLine(string.Join(", ", distinctPeople.Select(p => p.Name))); // 輸出: Alice, Bob
結合其他 LINQ 方法使用:
可以將 DistinctBy
與其他 LINQ 方法(如 OrderBy
)結合使用,以實現更復雜的功能:
var numbers = new List<int> { 5, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 };
var distinctNumbers = numbers
.OrderBy(x => x)
.DistinctBy(x => x);
Console.WriteLine(string.Join(", ", distinctNumbers)); // 輸出: 1, 2, 3, 4, 5, 6, 9
總之,DistinctBy
是一個非常有用的方法,可以幫助你輕松地刪除集合中的重復項,同時保持元素的順序。