LIST.FindIndex(predicate match)的参数问题
List.FindIndex(predicate match)的参数是怎么写啊?这个看不懂。。。
谁能帮我
//删除一个教师记录
public static void Delete()
{
//根据工号查询,是否存在该记录,如不存在则提示,存在则删除
teacherID = Console.ReadLine(); //输入工号
//根据teacherID查询集合类 1.foreach遍历整个集合 2.List类提供的FindIndex方法
int index1 = teacherList.FindIndex(teacherID);//----错误:参数不正确
if (index1 = (-1))
{
Console.WriteLine("没有此工号!");
}
else
{
teacherList.RemoveAt(index1);
}
上面代码FindIndex参数怎么写呢?
好心人,帮帮忙吧!
分享到:
更多
------解决方案--------------------
teacherList的定义呢?
predicate这样的泛型委托一般采用lambda表达式的形式来表示,形式是
i => i == teacherID
这里假定
var teacherList = new List();
------解决方案--------------------
predicate是个delegate,定义为:
public delegate bool Predicate (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 dinosaurs = new List();
dinosaurs.Add("Compsognathus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Oviraptor");
dinosaurs.Add("Velociraptor");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Dilophosaurus");
dinosaurs.Add("Gallimimus");
dinosaurs.Add("Triceratops");
Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}
Console.WriteLine("\nFindIndex(EndsWithSaurus): {0}",
dinosaurs.FindIndex(EndsWithSaurus));
Console.WriteLine("\nFindIndex(2, EndsWithSaurus): {0}",
dinosaurs.FindIndex(2, EndsWithSaurus));
Console.WriteLine("\nFindIndex(2, 3, EndsWithSaurus): {0}",
dinosaurs.FindIndex(2, 3, EndsWithSaurus));
}
// Search predicate returns true if a string ends in "saurus".
private static bool EndsWithSaurus(String s)
{
if ((s.Length > 5) &&
(s.Substring(s.Length - 6).ToLower() == "saurus"))
{