繁体   English   中英

获取在Person对象列表中使用的名称列表

[英]Get a list of names used in a list of Person objects

说,我有一个名为“人”的“人”对象列表:

public class Person
{
    public int age;
    public string name;

    public Person(int age, string name)
    {
        this.age = age;
        this.name = name;
    }
}

List<Person> people = new List<Person>();

该列表中填充了大量人员数据。 如何获得列表中使用的所有名称的列表,但每个名称只有一个出现? 例如,如果在人员列表中有1000个名字为“ Bob”的人和200000个名字为“ Alice”的人,则我的列表中应仅包含“ Bob”的一个条目和“ Alice”的一个条目。

var names = people.Select(p => p.name).Distinct();

如果您能够使用LINQ,那么就像:

var distinctNames = people.Select(p => p.name).Distinct();

如果没有,那就更复杂了:

var distinctNames = new List<string>();

foreach(var person in people)
    if(!distinctNames.Contains(person.Name)) distinctNames.Add(person.Name);

或者,如果您正在使用大型数据集,并且需要更高效的功能(以空间为代价):

var distinctNames = new Dictionary<string, string>();

foreach(var person in people)
{
    if(!distinctNames.ContainsKey(person.Name))
    {
        distinctNames.Add(person.Name, person.Name);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM