asp.net

C#中Find及Findindex用法

2019-11-20

Findindex及find中需要一个参数,可用一个Lambda表达式来表示。

Findindex返回查找内容在列表中的位置,find返回参数相同类型的对象。

注意,如果找不到会报错哦,所以最好加上try.

示例如下:


假设有一个list,里面有10组数据,每组数据我都放到一个class中。现在演示一下查找的方法。

以下是用来表示数据的class,其实用struct也是一样的


定义一个类MyInfo

class MyInfo

{

      public int age;

      public double value;

      public string name;

}


List<MyInfo> list = new List<MyInfo>(); //创建一个存储数据的list

int[] agearr = 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<agearr.Length;i++)//将数据放入list中

{

      MyInfo mi = new MyInfo();

      mi.age = agearr[i];

      mi.name = names[i];

      mi.value = i / 3;

      list.Add(mi);          

}

Response.Write("<br>");

        

if (list!=null)

{

      for (int i = 0; i < list.Count; i++)//循环显示list中内容

      {

          Response.Write(list[i].age + "," + list[i].name+","+list[i].value+"<br>");

      }

      Response.Write("<br>");

      MyInfo mm = list.Find(a => a.age == 45);//查找年龄为45的人

      string sname=list.Find(a=>a.age==34).name; //查找年龄为34的人名

      int iage=list.Find(a=>a.name=="C").age; //查找名称为“C“的人的年龄 

      int imatch=list.FindIndex(a=>a.name=="D"); //查找是否存在叫"D"的人,返回list中有位置

      Response.Write(mm.age + "," + mm.name + "<br>");

}

else

{

       Response.Write("没有内容");

}