日期:2014-05-17  浏览次数:21566 次

LIST.FindIndex(predicate<T> match)的参数问题
List.FindIndex(predicate<T> match)的参数是怎么写啊?这个看不懂。。。
谁能帮我

//删除一个教师记录
        public static void Delete()
        {
            //根据工号查询,是否存在该记录,如不存在则提示,存在则删除
            teacherID = Console.ReadLine(); //输入工号
            //根据teacherID查询集合类  1.foreach遍历整个集合  2.List<T>类提供的FindIndex方法
           
            
            int index1 = teacherList.FindIndex(teacherID);//----错误:参数不正确
            if (index1 = (-1))
            {
                Console.WriteLine("没有此工号!");
            }
            else
            {
                teacherList.RemoveAt(index1);

            }


上面代码FindIndex参数怎么写呢?
好心人,帮帮忙吧!

------解决方案--------------------
teacherList的定义呢?

predicate<T>这样的泛型委托一般采用lambda表达式的形式来表示,形式是
i => i == teacherID
这里假定
var teacherList = new List<string>();
------解决方案--------------------
predicate是个delegate,定义为:
public delegate bool Predicate<T> (T obj)

只要是个函数,或者匿名函数,符合上面的声明即可。

下面是msdn中List.FindIndex的例子,来自:
http://msdn.microsoft.com/zh-cn/library/x1xzf2ca(v=vs.80).aspx


using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
     &