📜  c# linq 按属性唯一 - C# (1)

📅  最后修改于: 2023-12-03 14:59:40.280000             🧑  作者: Mango

C# LINQ按属性唯一

LINQ是.NET Framework内置的一种语言集成查询(Language Integrated Query)技术,用于对各种数据源执行一致查询操作。在使用LINQ时,我们经常需要对数据进行分组、去重、排序等操作。本文将介绍如何使用LINQ按属性唯一。

按属性去重

假设我们有一个Person类,其中包含Name和Age属性。

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

现在我们有一个Person列表,需要按姓名去重。我们可以使用以下LINQ查询:

List<Person> persons = new List<Person>()
{
    new Person() { Name = "Tom", Age = 18 },
    new Person() { Name = "Jerry", Age = 20 },
    new Person() { Name = "Tom", Age = 25 },
    new Person() { Name = "Tom", Age = 30 },
    new Person() { Name = "Mary", Age = 22 }
};

var uniquePersons = persons.GroupBy(p => p.Name).Select(g => g.First()).ToList();

在此查询中,我们首先使用GroupBy方法按照Name属性进行分组。然后使用Select方法获取每个分组的第一个元素,即保留了Name属性的唯一值。最后使用ToList方法将结果转换为List<Person>类型。

按属性排序

现在我们有一个数字列表,需要按数字从小到大排序,并将结果转换为字符串列表。我们可以使用以下LINQ查询:

List<int> numbers = new List<int>() { 3, 1, 4, 1, 5, 9, 2, 6, 5 };

var sortedNumbers = numbers.OrderBy(n => n).Select(n => n.ToString()).ToList();

在此查询中,我们首先使用OrderBy方法按照数字属性进行排序。然后使用Select方法将数字转换为字符串类型。最后使用ToList方法将结果转换为List<string>类型。

总结

使用LINQ按属性唯一和排序可以方便地对数据进行处理。通过本文的介绍,相信大家已经掌握了相关技巧,让我们在实际开发中更好地利用LINQ的强大特性。