扩展方法判断序列(或集合)是否包含元素

自定义扩展方法:

 public static class EnumerableExtensions
    {
        public static bool IsEmpty<T>(this IEnumerable<T> source)
        {
            return !source.Any();
        }
        public static bool IsNotEmpty<T>(this IEnumerable<T> source)
        {
            return source.Any();
        }
    }

测试用到的Person类:

public class Person
    {
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

    }

mian函数:

 static void Main(string[] args)
        {
            List<Person> list = new List<Person>()
            {
                new Person{Id=1,Name="张三"},
                new Person{Id=2,Name="李四"},
            };
            if (list.IsNotEmpty())
            {
               Console.WriteLine("not empty");
            }
            else
            {
                Console.WriteLine("empty");
            }
            Console.ReadKey();
        }

运行截图:

总结:其实只是对linq中的Any()方法进行了一下简单的封装。

用source.Any()方法比用source.Count()>0较好,是因为source.Count()>0 遇到 yeild return等情况时会出现性能问题。

简言之,用source.Any()方法比较高效和保险。

而source.Any()的名字没IsEmpty和IsNotEmpty通俗易懂(好听),故,用扩展方法封装了一下。

时间: 2024-12-08 16:51:32

扩展方法判断序列(或集合)是否包含元素的相关文章

判断数组或者集合中重复元素的个数。

当我们需要对数组或者集合中的元素进行重复元素个数时,我们不妨使用map来完成此操作. 由于map中key是唯一的,所以利用这一特性就可以对数组中重复元素进行统计. java实现代码如下. String[] names={"a","b","a","b","c"}; Map<String,Integer> sameElement=new HashMap<String,Integer>()

iOS 判断数组array中是否包含元素a,取出a在array中的下标

目前找到来4个解决办法,第三个尤为简单方便 /////////1111111 NSArray * arr = @[@"1",@"2",@"3",@"4",@"5"]; //是否包含 if ([arr containsObject:@"3"]) { NSInteger index = [arr indexOfObject:@"3"]; NSLog(@"-1--

.NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以,跟着本篇的步伐,继续来围观. /* 新语法索引 */ 1.自动属性 Auto-Implemented Properties 2.隐式类型 var 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } 5.匿名类 & 匿名方法 6.扩展方法 7.系统内置委托 Func / Acti

匿名类、匿名方法、扩展方法

/* 新语法索引 */ 1.自动属性 Auto-Implemented Properties 2.隐式类型 var 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } 5.匿名类 & 匿名方法 6.扩展方法 7.系统内置委托 Func / Action 8.Lambda表达式 9.标准查询运算符 Standard Query Operator 10.LINQ查询表达式 一.匿名类 1.1 不好意思,我匿了 在开发中,我们有时会像下面的代码一样声明一个匿名类:可以看出,在匿名

Python序列结构--集合

集合:元素之间不允许重复 集合属于Python无序可变序列,元素之间不允许重复 集合对象的创建与删除 直接将值赋值给变量即可创建一个集合 >>> a = {3,5}>>> type(a)<class 'set'> set()函数将列表.元组.字符串.range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则转换为集合的时候只保留一个:如果原序列或迭代对象中有不可哈希的值,无法转换为集合,抛出异常 >>> a_set=set(

项目中遇到的扩展方法-总结和分享

概述: 本篇是对工作中遇到的扩展方法的总结,好记性不如乱笔头,先记下来,以后遇到类似问题,如果忘了,可以看下博客. 一.问题描述: 在项目中遇到一个问题,就是要将左边的代码替换为右边的代码,右边代码是对左边代码的封装,所以右边的代码更简便些. dataReader.IsDBNull(2) ? (string)null : dataReader.GetString(2).Trim(); dataReader.MyGetDataString(2); dataReader的类型是System.Data

用UseMiddleware扩展方法注册中间件类

用UseMiddleware扩展方法注册中间件类 .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除了直接用ApplicationBuilder的Use()方法注册中间件外,还可以使用ApplicationBuilder的扩展方法UseMiddleware()注册中间件.这种情况下可以注册类型,这个方法会通过反射解析这个类型,并把它包装成Func<

【ASP.NET MVC 学习笔记】- 14 HtmlHlper的扩展方法

本文参考:http://www.cnblogs.com/willick/p/3428413.html 1.在 MVC 中用于生成 Html 元素的辅助类是 System.Web.Mvc 命名空间下的 HtmlHelper,习惯上我们把 HtmlHelper 中的(扩展)方法叫 HtmlHelper Method,简称为Helper Method.它的作用是把生成 Html代码的任务交给 MVC,以便 MVC 能完成很多自动处理的工作.我们在 View 中使用的 Html.ActionLink.H

Map.containsKey方法——判断Map集合对象中是否包含指定的键名

该方法判断Map集合对象中是否包含指定的键名.如果Map集合中包含指定的键名,则返回true,否则返回false. public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple", "新鲜的苹果"); //向集合中添加对象 map.put("computer", "配置优良的计算机"); map.put(&q