📅  最后修改于: 2023-12-03 15:29:47.663000             🧑  作者: Mango
在 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 文档。
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; }
}
以上参考链接为微软官方文档。