使用 List< >.FindIndex 找到要刪除的ListItem (多個查詢條件 )

使用 List< >.FindIndex 找到要刪除的ListItem (多個查詢條件 )

問題:

要刪除List<>中特定的一筆資料(有多個查詢條件)

 

解法:

  1. 使用List<>.FIndIndex取得項目編號

  2. 再用List<>.RemoveAt(index)將資料刪除

 

KeyPoint:

List<>.FIndIndex( delegate() )

 

//定義員工資料型態
public class Employee
{
    private string _Id;
    public string Id
    {
        get { return _Id; }
        set { _Id = value; }
    }
    private string _Phone;
    public string Phone
    {
        get { return _Phone; }
        set { _Phone = value; }
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (this.IsPostBack)
        return;
	
	//建立員工清單
    List<Employee> Employees = new List<Employee>();
    Employees.Add(new Employee { Id = "1", Phone = "07-111-1111" });
    Employees.Add(new Employee { Id = "1", Phone = "0911-111-111" });
    Employees.Add(new Employee { Id = "2", Phone = "0911-111-111" });

	//刪除 Id= "1"  Phone= "0911-111-111" 的那一筆資料
    Employee delData = new Employee { Id = "1", Phone = "0911-111-111" };
    RemovieList(delData, Employees);
}

private static void RemovieList(Employee delData, List<Employee> Employees)
{
	//找出要刪除資料再List中的index
    int index = Employees.FindIndex(delegate(Employee _Employee)
    {
		//刪除條件
        if (_Employee.Id != delData.Id)
            return false;
        if (_Employee.Phone != delData.Phone)
            return false;

        return true;
    });
	//刪除資料
    Employees.RemoveAt(index);
}

Technorati 的標籤: ,,