C#查找类列表的索引

时间:2013-09-21 22:41:15

标签: c#

查找班级索引:

我知道找到List索引的唯一方法是

        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; }
    }
}

3 个答案:

答案 0 :(得分:2)

  

我想知道如何添加使用

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

除了r >=的语法问题({1}}

之外,没问题

这样可行:

r =>

请参阅:Lambda Expressions

答案 1 :(得分:1)

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

应该有效。也许你错过了使用System.Linq 参考

答案 2 :(得分:0)

不完全确定你要完成什么,但是一个简单的List集合不会确保顺序或排序,所以索引(特别是如果预期集合会发生变化)不是一个可靠的手段访问特定对象。

如果索引/顺序很重要,可以查看其他集合类型,例如“已排序”列表:http://msdn.microsoft.com/en-us/library/system.collections.sortedlist.aspx

如果你只是想找到一个特定的对象,你可以使用Linq,然后就像:

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