在自定义的List<>中,如何用indexof来查找

Gromwell 2009-07-07 01:05:27
比如有如下代码:
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的索引值
}
...全文
397 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
paul9137 2009-08-11
  • 打赏
  • 举报
回复
做个记号
十八道胡同 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lcl_data 的回复:]
要重写Equals方法个Gethashcode方法
[/Quote]

google可以得到.
十八道胡同 2009-07-07
  • 打赏
  • 举报
回复
要重写Equals方法个Gethashcode方法
Gromwell 2009-07-07
  • 打赏
  • 举报
回复
谢谢各位!
不用遍历是因为本身取出的索引,就是用于一系列复杂的嵌套中,且用到的地方很多,遍历是很不方便的

自己封装或者chen_xiangguo的重写也可以,不过。。。。我想知道有没有比较直接的方法,因为我刚学,很多东西还不熟悉,防止自己写了半天,原来有直接可以用的方法,呵呵

where和linq是不错的方法,但也稍微绕了一下下,呵呵

主要还是为了学习。

刚接触到了一点lambda表达式,不知道是否可以直接用于indexof? =>的表达式似乎很难懂,看了一头雾水,可能写多了会慢慢体会到吧。网上查了一下也有jj.FindAll(n=>n.indexof("aa")>=0)的写法,有点意思,但不是很懂
bennyyyyy 2009-07-07
  • 打赏
  • 举报
回复
为什么不用linq呢
wolf1118baby 2009-07-07
  • 打赏
  • 举报
回复
为什么非要用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;
}
}
chen_xiangguo 2009-07-07
  • 打赏
  • 举报
回复
重写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());
}
LQknife 2009-07-07
  • 打赏
  • 举报
回复
indexof方法比较弱 为啥不用where呢?
Gromwell 2009-07-07
  • 打赏
  • 举报
回复
谢谢楼上的朋友,我终于找到了一个函数
jj.FindIndex(n => n.a == 15);
changjiangzhibin 2009-07-07
  • 打赏
  • 举报
回复
原理也是遍历,可以自己提供一个方法封装后取名为Indexof,放成属性亦可

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧