(2010-11-18) C#.NET List <Of T>.FindIndex 與 delegate 方法 [移除集合內第一個尋找到的元素]

摘要:(2010-11-18) C#.NET List .FindIndex 與 delegate 方法 [移除集合內第一個尋找到的元素]

程式碼


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ListRemoveConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            List _list = new List();
            _list.Add(new DefinitionType{ Id=1, Name="Allen", Sex= SexTypes.男});
            _list.Add(new DefinitionType{ Id=2, Name="Ritek", Sex= SexTypes.男}) ;
            _list.Add(new DefinitionType{ Id=4, Name="eric", Sex= SexTypes.男});
            _list.Add(new DefinitionType{ Id=6, Name="Mary", Sex= SexTypes.女});
            _list.Add(new DefinitionType{ Id=5, Name="Tom", Sex= SexTypes.男});
            _list.Add(new DefinitionType { Id = 3, Name = "Mary", Sex = SexTypes.女 });

            Console.WriteLine("未移除時資料");
            ViewLiat(_list);
            Console.WriteLine("");
            RemoveList(_list, "Mary");
            Console.WriteLine("已移除時資料");
            ViewLiat(_list);
            Console.ReadLine();
        }

        //移除資料 Method
        private static void RemoveList(List _list, String _name)
        {
            // List .FindIndex 方法 搜尋符合指定述詞所定義之條件的元素,並傳回 List <(Of <(T >)>) 內或它的一部分中第一個相符元素之以零起始的索引。
            Console.WriteLine(String.Format("移除姓名{0} 資料",_name));
            Console.WriteLine("");
            _list.RemoveAt(
          _list.FindIndex(
          delegate(DefinitionType _definition)
          {
              return _definition.Name.Equals(_name.Trim());
          }
          ));
        }

        //顯示資料Method
        public static void ViewLiat(List _list)
        {
            foreach (DefinitionType _def in _list)
            {
                Console.WriteLine(String.Format("編號:{0}  姓名:{1} 性別:{2}",_def.Id,_def.Name,_def.Sex.ToString()));
            }
        }
    }

    //自訂資料形態
    public class DefinitionType
    {
        private Int32 _id;

        public Int32 Id
        {
            get { return _id; }
            set { _id = value; }
        }
        private String _name;

        public String Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private SexTypes _sex;

        internal SexTypes Sex
        {
            get { return _sex; }
            set { _sex = value; }
        }
    }

    //列舉性別形態
    enum SexTypes
    {
        男,女
    }
}