📜  c# 按值区分对象数组 - C# (1)

📅  最后修改于: 2023-12-03 15:29:47.663000             🧑  作者: Mango

C# 按值区分对象数组

在 C# 中,我们可以使用数组来存储一组对象。然而,在某些情况下,我们可能需要按特定属性的值来区分这些对象。本文将介绍如何按值区分对象数组。

创建对象数组

首先,我们需要创建一个包含对象的数组。假设我们有一个名为 Person 的类表示人,它有两个属性:Name(名字)和 Age(年龄)。我们可以使用以下代码创建一个包含 Person 对象的数组:

Person[] people = new Person[]
{
    new Person { Name = "Alice", Age = 25 },
    new Person { Name = "Bob", Age = 30 },
    new Person { Name = "Charlie", Age = 25 },
    new Person { Name = "Dave", Age = 35 }
};

以上代码创建了一个包含四个 Person 对象的数组。其中,有两个人的年龄相同(25 岁)。

按值区分对象数组

现在,我们可以使用 LINQ 来按值区分对象数组。假设我们要按年龄区分人,我们可以使用以下代码:

var ageGroups = from p in people
                group p by p.Age into g
                select new { Age = g.Key, People = g };

foreach (var group in ageGroups)
{
    Console.WriteLine($"Age {group.Age}:");
    foreach (var person in group.People)
    {
        Console.WriteLine($"{person.Name}");
    }
}

以上代码将输出以下内容:

Age 25:
Alice
Charlie
Age 30:
Bob
Age 35:
Dave

以上代码使用 group by 关键字将人按照年龄进行分组。select new { Age = g.Key, People = g } 将每个分组的年龄和人分别存储到一个匿名类型的对象中。

Markdown 文档

以上就是如何按值区分对象数组的方法。以下是完整代码和 Markdown 文档。

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        Person[] people = new Person[]
        {
            new Person { Name = "Alice", Age = 25 },
            new Person { Name = "Bob", Age = 30 },
            new Person { Name = "Charlie", Age = 25 },
            new Person { Name = "Dave", Age = 35 }
        };

        var ageGroups = from p in people
                        group p by p.Age into g
                        select new { Age = g.Key, People = g };

        foreach (var group in ageGroups)
        {
            Console.WriteLine($"Age {group.Age}:");
            foreach (var person in group.People)
            {
                Console.WriteLine($"{person.Name}");
            }
        }
    }
}

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
参考链接

以上参考链接为微软官方文档。