c# - 找出列表中的重复值

标签 c# list

<分区>

我试图找出列表中的重复值。

但是,我的列表的类型不是原始类型,我想知道列表中的哪些元素是重复的。

例如,我在 List<Person> 中有三个“Person”类,,喜欢以下代码。

我的过滤器是 Person 类的“Gender”属性,目标结果应该包含“Mary”和“Sandy”对象,因为它们的 Gender 值相同-->女性。

Person Paul = new Person() { Name="Paul", Gender="male", Age="15"};
Person Mary = new Person() { Name = "Mary", Gender = "female", Age = "22" };
Person Sandy = new Person() { Name = "Sandy", Gender = "female", Age = "13" };

List<Person> people = new List<Person>();
people.Add(Paul);
people.Add(Mary);
people.Add(Sandy);   

最佳答案

使用 GroupBy 查找“重复项”,然后按计数限制:

var duplicates = people.GroupBy(p => p.Gender)
                       .Where (g => g.Count() >= 2);

此时您可以枚举:

foreach (Person person in duplicates)
{
   Console.WriteLine(person.Name);
}

关于c# - 找出列表中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27954581/

相关文章:

c# - 为什么 .NET Core 的模型验证器在验证消息上显示模型属性的名称而不是 JSON 字段名称?

c# - 将 C 移植到 C# 时棘手的整数溢出

c# - 在自定义 JsonConverter 中,如何确定 Utf8JsonReader 数字标记是小数还是长整型?

python - 从字符串列表中删除空白字符串值

python - 如果字典在列表中,如何将它们的值从字符串更改为 int

java - "\n"Java 上的 split

c# - 在登录 View 中找到控件

c# - 无法连接到任何指定的 MySQL 主机

c# - 在列表中搜索组合

python - 按属性聚合对象数组