您的位置:首页 > 编程语言 > C#

C#使用-Find方法(续)

2011-12-29 23:43 176 查看
这几天出现了CSDN账号密码被泄露事件,于是我也上来看看,结果果然密码被修改了。。。

好久没上来发现有些人给我留言,很抱歉没有及时的给你们回复。在Find方法那篇博客中有人问到Find方法如果是使用的对象怎么进行Find,在此把代码贴出来

using System;
using System.Collections.Generic;

namespace FindSample
{
class Program
{
static void Main(string[] args)
{
List<Task> tasks = InitializeTasks();

TaskFindHelper taskFindHelper = new TaskFindHelper();

// Set the finding conditions
taskFindHelper.ID = "Task1";
taskFindHelper.Size = 100;
taskFindHelper.Status = 1;

Task result1 = taskFindHelper.FindTask(tasks, TaskFindingType.ID);
Task result2 = taskFindHelper.FindTask(tasks, TaskFindingType.Size);
Task result3 = taskFindHelper.FindTask(tasks, TaskFindingType.Status);

if (result1 != null)
{
Console.WriteLine("Finding the ID == Task1 task, the result is:");
Console.WriteLine(result1.ToString());
}

if (result2 != null)
{
Console.WriteLine("Finding the size == 100 task, the result is:");
Console.WriteLine(result2.ToString());
}

if (result3 != null)
{
Console.WriteLine("Finding the Status == 1 task, the result is:");
Console.WriteLine(result3.ToString());
}

Console.WriteLine();

List<Task> result4 = taskFindHelper.FindAllTask(tasks, TaskFindingType.ID);
List<Task> result5 = taskFindHelper.FindAllTask(tasks, TaskFindingType.Size);
List<Task> result6 = taskFindHelper.FindAllTask(tasks, TaskFindingType.Status);

if (result4 != null)
{
Console.WriteLine("Finding the ID == Task1 task, the result is:");
foreach (Task task in result4)
Console.WriteLine(task.ToString());
}

if (result5 != null)
{
Console.WriteLine("Finding the size == 100 task, the result is:");
foreach (Task task in result5)
Console.WriteLine(task.ToString());
}

if (result6 != null)
{
Console.WriteLine("Finding the Status == 1 task, the result is:");
foreach (Task task in result6)
Console.WriteLine(task.ToString());
}
}

private static List<Task> InitializeTasks()
{
Task t1 = new Task();
t1.ID = "Task1";
t1.Size = 100;
t1.Status = 0;

Task t2 = new Task();
t2.ID = "Task2";
t2.Size = 100;
t2.Status = 1;

Task t3 = new Task();
t3.ID = "Task3";
t3.Size = 150;
t3.Status = 1;

List<Task> taskList = new List<Task>();
taskList.Add(t1);
taskList.Add(t2);
taskList.Add(t3);

return taskList;
}
}

public class TaskFindHelper
{
public Task FindTask(List<Task> tasks, TaskFindingType t)
{
Task result = null;

switch (t)
{
case TaskFindingType.ID:
result = tasks.Find(FindByTaskID);
break;
case TaskFindingType.Size:
result = tasks.Find(FindByTaskSize);
break;
case TaskFindingType.Status:
result = tasks.Find(FindByTaskStatus);
break;
default:
break;
}

return result;
}

public List<Task> FindAllTask(List<Task> tasks, TaskFindingType t)
{
List<Task> result = null;

switch (t)
{
case TaskFindingType.ID:
result = tasks.FindAll(FindByTaskID);
break;
case TaskFindingType.Size:
result = tasks.FindAll(FindByTaskSize);
break;
case TaskFindingType.Status:
result = tasks.FindAll(FindByTaskStatus);
break;
default:
break;
}

return result;
}

private bool FindByTaskID(Task task)
{
return (task.ID == this.ID);
}

public String ID { get; set; }

private bool FindByTaskSize(Task task)
{
return (task.Size == this.Size);
}

public int Size { get; set; }

private bool FindByTaskStatus(Task task)
{
return (task.Status == this.Status);
}

public int Status { get; set; }
}

public enum TaskFindingType
{
ID,
Size,
Status
}

public class Task
{
public String ID { get; set; }
public int Size { get; set; }
public int Status { get; set; }

public override string ToString()
{
return String.Format("ID is {0}, size is {1}, status is {2}", ID, Size, Status);
}
}
}


运行结果为

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: