【发布时间】:2015-04-18 19:38:32
【问题描述】:
假设我有一个类Person,它有一个int 类型的属性PersonId,还有一个类Company,它有一个Persons 类型的属性List<Person>。我还有一个名为company1 的Company 对象。代码如下:
class Company
{
public List<Person> Persons { get; private set; }
public Company()
{
this.Persons = new List<Person>();
}
}
class Person
{
public int PersonId { get; set; }
}
// In a different class
public static Company company1 = new Company();
我需要返回Persons 列表中的Person 对象,其属性PersonId 与selectedPersonId 给出的某个值匹配。
这是我目前用来执行此操作的代码:
Person person1;
int personIndex = company1.FindPersonIndexById(selectedPersonId);
if (personIndex != -1)
{
person1 = company1.Persons[personIndex];
}
其中FindPersonIndexById(int) 是Company 类中的一个方法:
public int FindPersonIndexById(int personId)
{
for (int i = 0; i < Persons.Count(); i++)
{
if (Persons[i].PersonId == personId)
{
return i;
}
}
return -1;
}
这是从一个对象的属性与某个值匹配的列表中获取对象的最佳方法,还是有更好或更简洁的方法?
我不确定这是否类似于这个问题:Check whether a List of object has a node which matches a given property of that object。
【问题讨论】:
标签: c# list object search properties