[英]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.