Findindex及find中需要一个参数,可用一个Lambda表达式来表示。
Findindex返回查找内容在列表中的位置,find返回参数相同类型的对象。
注意,如果找不到会报错哦,所以最好加上try.
示例如下:
假设有一个list,里面有10组数据,每组数据我都放到一个class中。现在演示一下查找的方法。
以下是用来表示数据的class,其实用struct也是一样的
public
class MyInfo
{
public
int age;
public
double value;
public
string name;
}
代码调用:
List <MyInfo> mystr=new
List<MyInfo>();
//创建一个存储数据的LIST
int []agearray=new
int[]{20,30,60,14,16,42,34,45,22,31};
string []names=new
string[]{"A","B","C","D","E","F","G","H","I","J"};
for(int i=0;i<10;i++)//将数据放入LIST中
{MyInfo stem=new
MyInfo();
stem.name=names[i];
stem.age=agearray[i];
stem.value=i/3;
mystr.Add(stem);
}
try
//防止查找内容不存在的出错
{
int iage=mystr.Find(a=>a.name=="C").age;
//查找名称为“C“的人的年龄
lbLog.Items.Add("Find people C's age,result: "+iage.ToString());
//在listbox(lbLog)中显示
string sname=mystr.Find(a=>a.age==34).name;
//查找年龄为34的人名
lbLog.Items.Add("Find the people name whose age is 34,Result: "+sname);
//在listbox(lbLog)中显示
int imatch=mystr.FindIndex(a=>a.name=="D");
//查找是否存在叫"D"的人,返回list中有位置
lbLog.Items.Add("Find match item is: "+imatch.ToString());
//在listbox(lbLog)中显示
}
catch
{
lbLog.Items.Add("Can't find anything!");
}