如何用List.find 方法,实现满足动态值要求的查找

zicerock 2008-07-16 01:51:48
在下菜鸟,只能低分求助,如有帮助者感激不尽!
对于List<T>.find 方法:

static void Main(string[] args)
{
List <Employee> empList = new List <Employee> ();
empList.Add(new Employee( "Name1 ", "CEO "));
empList.Add(new Employee( "Name2 ", "CTO "));
empList.Add(new Employee( "Name3 ", "CFO "));
empList.Add(new Employee( "Name4 ", "COO "));
empList.Add(new Employee( "Name5 ", "CEO "));

Console.WriteLine(empList.Find(FindOne));


Console.ReadLine();
}

public static bool FindOne(Employee e) //#1
{
if (e.Position == "COO ") return true;
else return false;
}


如果红色部分是个动态的值,find方法又如何使用?最好不用全局变量。
...全文
367 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zicerock 2008-07-17
  • 打赏
  • 举报
回复
虽然没有得到想要的答案,但各位大虾能不嫌分低热情为我等菜鸟解答,学到了不同的思路,不胜感激.二楼smntbk 的代码很简洁,以后还多请赐教.
zicerock 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kkai189 的回复:]
C# codestatic void Main(string[] args)
{
List<Employee> empList = new List<Employee>();
empList.Add(new Employee("Name1 ", "CEO"));
empList.Add(new Employee("Name2 ", "CTO"));
empList.Add(new Employee("Name3 ", "CFO"));
empList.Add(new Employee("Name4 ", "COO"));
empList.Add(new Employee("Name5 ", "CEO"));


[/Quote]

我也很想通过这种方法实现,但find方法没有提供两个参数的重载啊,无法编译通过。
kkai189 2008-07-16
  • 打赏
  • 举报
回复
static void Main(string[] args)
{
List<Employee> empList = new List<Employee>();
empList.Add(new Employee("Name1 ", "CEO"));
empList.Add(new Employee("Name2 ", "CTO"));
empList.Add(new Employee("Name3 ", "CFO"));
empList.Add(new Employee("Name4 ", "COO"));
empList.Add(new Employee("Name5 ", "CEO"));

List<Employee> list = FindEmployeeByPos(empList,"CEO");

Console.WriteLine(list.Count);


Console.ReadLine();
}
public static List<Employee> FindEmployeeByPos(List<Employee> list,string postion)
{
List<Employee> returnList = new List<Employee>();
for (int i = 0; i < list.Count;i++ )
{
if (list[i].Position==postion)
{
returnList.Add(list[i]);
}
}
return returnList;
}

不知道这个是不是你要的。
smntbk 2008-07-16
  • 打赏
  • 举报
回复
MS不行吧。
PS:
public  static  bool  FindOne(Employee  e)                    //#1 
{
//if (e.Position == "COO ") return true;
//else return false;
return e.Position == "COO ";//不就行了?
}

卧_槽 2008-07-16
  • 打赏
  • 举报
回复
只能用一个静态变量来替换 "COO "达到动态效果。
empList.Find()函数返回的是一个Employee类型的对象。很好用的。

110,534

社区成员

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

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

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