比如有如下代码: 
public class aaa 

    public int a { set; get; } 
    public string b { set; get; } 
} private void button1_Click(object sender, EventArgs e) 

    List <aaa> jj = new List <aaa>(); 
    jj.Add(new aaa { a = 5, b = "ee" }); 
    jj.Add(new aaa { a = 3, b = "ete" }); 
    jj.Add(new aaa { a = 15, b = "aa" }); 
    jj.Add(new aaa { a = 3, b = "dd" });     //现在我想用indexof查找jj的a列中=15的索引值

解决方案 »

  1.   

    原理也是遍历,可以自己提供一个方法封装后取名为Indexof,放成属性亦可
      

  2.   

    indexof方法比较弱 为啥不用where呢?
      

  3.   

    重写Equals方法 public class aaa
        {
            public aaa(int a,string b)
            {
                this.a = a;
                this.b = b;
            }
            public int a { set; get; }
            public string b { set; get; }
            public override bool Equals(object obj)
            {
                aaa demo = obj as aaa;
                if (demo == null)
                    return false;
                return this.a.Equals(demo.a);
            }
        }这样的话,当类aaa的两个实例的a相等时,这两个对象就相等.  List<aaa> jj = new List<aaa>();
            private void Form1_Load(object sender, EventArgs e)
            {
                jj.Add(new aaa (5,"ee" ));
                jj.Add(new aaa (3,"ete"));
                jj.Add(new aaa (15,"aa"));
                jj.Add(new aaa (3,"dd" ));
            }        private void button1_Click(object sender, EventArgs e)
            {
                aaa demo=new aaa(3,"");
                MessageBox.Show(jj.IndexOf(demo).ToString());
            }
      

  4.   

    为什么非要用indexOf呢?
    public class aaa 

        public int a { set; get; } 
        public string b { set; get; } 
    } private void button1_Click(object sender, EventArgs e) 

        List <aaa> jj = new List <aaa>(); 
        jj.Add(new aaa { a = 5, b = "ee" }); 
        jj.Add(new aaa { a = 3, b = "ete" }); 
        jj.Add(new aaa { a = 15, b = "aa" }); 
        jj.Add(new aaa { a = 3, b = "dd" }); 
        //这样不可以吗?
        int jj_index=0;
        foreach(aaa var in jj)
        {
           jj_index++;
           if(var.a==15)
              break;
        }

      

  5.   

    谢谢各位!
    不用遍历是因为本身取出的索引,就是用于一系列复杂的嵌套中,且用到的地方很多,遍历是很不方便的自己封装或者chen_xiangguo的重写也可以,不过。我想知道有没有比较直接的方法,因为我刚学,很多东西还不熟悉,防止自己写了半天,原来有直接可以用的方法,呵呵where和linq是不错的方法,但也稍微绕了一下下,呵呵主要还是为了学习。刚接触到了一点lambda表达式,不知道是否可以直接用于indexof? =>的表达式似乎很难懂,看了一头雾水,可能写多了会慢慢体会到吧。网上查了一下也有jj.FindAll(n=>n.indexof("aa")>=0)的写法,有点意思,但不是很懂
      

  6.   

     要重写Equals方法个Gethashcode方法
      

  7.   

    谢谢楼上的朋友,我终于找到了一个函数
    jj.FindIndex(n => n.a == 15);