asp.net

C# List中Find的用法

2019-11-19

C# List中Find的用法

在决定使用List<T>还是使用ArrayList类时,记住List<T>在大多数情况下执行的更好并且是类型安全的。


List.Find方法:

搜索与制定谓词所定义的条件相匹配的元素,并返回整个List中的第一个匹配元素。


public T Find(Predicate<T> match)

这种方法方便快捷,直接在List中寻找相同的值,避免了反复循环去找值,提高了运行效率。


Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则返回该方法返回true。当前List的元素被逐个传递给Predicate委托,并在List中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。

//定义一个类 和里面一个带参数的构造函数

class User

    {

        int _id;

        string _name;

        public User(int id, string name)

        {

            _id = id;

            _name = name;

        }

        public int id

        {

            set { _id = value; }

            get { return _id; }

        }

        public string name

        {

            set { _name = value; }

            get { return _name; }

        }

    }

//使用这个方法  

protected void Page_Load(object sender, EventArgs e)

    {

        List<User> userCollection = new List<User>();

        userCollection.Add(new User(1, "testOne"));

        userCollection.Add(new User(2, "testTwo"));

        userCollection.Add(new User(3, "testThree"));


        //方法1

        User resultUser = userCollection.Find((User user) => user.id == 2 && user.name.Equals("testTwo"));

        //方法2

        User rUser = userCollection.Find(delegate (User user)

        {

            return user.id == 1 && user.name.Equals("testOne");

        });


        Response.Write("方法1:"+resultUser.id + ",,,,," + resultUser.name+"<br>");

        Response.Write("方法2:" + rUser.id + ",,,,," + rUser.name);

    }