.net编码中,使用泛型List<>时,经常遇到这样的需求:新来一个Model对象,如果已有的List中没有这条数据,则把新对象Add到List中,否则不处理
判断已有的List中是否包含这个新的model,方法有几种,最直白的foreach遍历原有List并逐个判断
另外就是使用List自带的方法Exists 和Contains了
这两个方法有什么区别呢?通过MSDN描述和实际测试,很容易发现:
Contains方法,判断结果表示对象T的内存地址,是否在List中;
Exists方法,通过委托参数,可以指定判断对象某个值,是否与List中的某条记录的对应值相等;
显然针对开头提出的需求,用Exists方法更合适。
示例代码:
if(!MyList.Exists(t=>t.Id==MyModel.id)) { MyList.Add(MyModel); }
PS:实现后的思考,采用.net提供的Exists 和Contains时,和使用foreach自己遍历后比较,在内部执行效率和性能上是否有本质区别呢?
个人觉得应该是一样的,只是自己实现与采用.net封装方法的区别。
List<T>中Exists 和Contains的区别
时间: 2024-11-11 08:55:22