如何使用List <object>的IndexOf()方法

我在List<T>中使用IndexOf()方法所看到的所有示例都是基本的stringtypes。 我想知道的是如何基于一个对象variables返回作为对象的列表types的索引。

 List<Employee> employeeList = new List<Employee>(); employeeList.Add(new Employee("First","Last",45.00)); 

我想find索引where employeeList.LastName == "Something"

 int index = employeeList.FindIndex(employee => employee.LastName.Equals(somename, StringComparison.Ordinal)); 

编辑:没有用于C#2.0的lambdas(原始不使用LINQ或任何.NET 3 +function,只是C#3.0中的lambda语法):

 int index = employeeList.FindIndex( delegate(Employee employee) { return employee.LastName.Equals(somename, StringComparison.Ordinal); }); 
 public int FindIndex(Predicate<T> match); 

使用lambdas:

 employeeList.FindIndex(r => r.LastName.Equals("Something")); 

注意:

 // Returns: // The zero-based index of the first occurrence of an element // that matches the conditions defined by match, if found; // otherwise, –1. 

你可以通过覆盖等于方法来做到这一点

 class Employee { string _name; string _last; double _val; public Employee(string name, string last, double val) { _name = name; _last = last; _val = val; } public override bool Equals(object obj) { Employee e = obj as Employee; return e._name == _name; } } 

对不起,一个更好的措施:)

 int index = employees.FindIndex( delegate(Employee employee) { return employee.LastName == "Something"; }); 

编辑: – 完整的例子在.NET 2.0项目。

 class Program { class Employee { public string LastName { get; set; } } static void Main(string[] args) { List<Employee> employeeList = new List<Employee>(); employeeList.Add(new Employee(){LastName="Something"}); employeeList.Add(new Employee(){LastName="Something Else"}); int index = employeeList.FindIndex(delegate(Employee employee) { return employee.LastName.Equals("Something"); }); Console.WriteLine("Index:{0}", index); Console.ReadKey(); } } 

我喜欢这样

  private List<Person> persons = List<Person>(); public PersonService() { persons = new List<Person>() { new Person { Id = 1, DOB = DateTime.Today, FirstName = "Pawan", LastName = "Shakya" }, new Person { Id = 2, DOB = DateTime.Today, FirstName = "Bibek", LastName = "Pandey" }, new Person { Id = 3, DOB = DateTime.Today, FirstName = "Shrestha", LastName = "Prami" }, new Person { Id = 4, DOB = DateTime.Today, FirstName = "Monika", LastName = "Pandey" }, }; } public PersonRepository.Interface.Person GetPerson(string lastName) { return persons[persons.FindIndex(p=>p.LastName.Equals(lastName, StringComparison.OrdinalIgnoreCase))]; }