2013-09-21 3 views
0

Нахождение индекса класса:C# Найти индекс Список классов

Единственный способ я знаю, чтобы найти индекс списка является

 int index = listEmployee.FindIndex(
      delegate(Employee findEmployee) 
      { 
       return findEmployee.Name.Equals(findName, StringComparison.Ordinal); 
      }); 

Мне было интересно, как добавить возможность использование

int indexT = listEmployee.FindIndex(r >= r.Name == findName); 

Или в основном то, что я делаю неправильно, что я не могу его использовать.

class Employee 
{ 
    private string _name; private int _idNumber; 
    private string _deptarment; private string _position; 

    public Employee() 
    { 
     _name = ""; _idNumber = 0; _deptarment = ""; _position = ""; 
    } 
    public string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 
    public int IdNumber 
    { 
     get { return _idNumber; } 
     set { _idNumber = value; } 
    } 
    public string Department 
    { 
     get { return _deptarment; } 
     set { _deptarment = value; } 
    } 
    public string Position 
    { 
     get { return _position; } 
     set { _position = value; } 
    } 
} 
+1

Почему вы считаете, что делаете что-то неправильно? –

+1

'int indexT = listEmployee.FindIndex (r => r.Name == findName);' is fine –

+1

Ваше выражение lamdba неверно 'r => r.Name == findName' –

ответ

1

Мне было интересно, как добавить возможность использовать

int indexT = listEmployee.FindIndex(r >= r.Name == findName); 

Это прекрасно, кроме проблемы синтаксиса в r >=, который должен быть r =>

Так это работает:

int indexT = listEmployee.FindIndex(r => r.Name == findName); 

См: Lambda Expressions

+0

Спасибо .../sigh вел меня сам, и это простая синтаксическая ошибка, заставляющая меня там. – Crazyd

1
int indexT = listEmployee.FindIndex(r => r.Name == findName); 

должен работать. Возможно, вам не хватает с использованием System.Linq referece

0

Не совсем уверен, чего вы пытаетесь выполнить, но простая коллекция списков не будет обеспечивать порядок или сортировку, поэтому индекс (особенно если коллекция как ожидается, изменится) не является надежным средством доступа к конкретному объекту.

Если индекс/важен порядок, может быть, посмотреть на другой тип коллекции, например, отсортированный список: http://msdn.microsoft.com/en-us/library/system.collections.sortedlist.aspx

Если вы просто пытаетесь найти конкретный объект, вы можете использовать Linq и просто пойти что-то например:

listEmployee.Where(r => r.Name == findName); 
+0

Просто пытаясь изучить C# ATM для проекта класса, я отсортировал список, чтобы понять, как использовать команду Find Index. Просто стараюсь учиться как можно больше. – Crazyd

Смежные вопросы