linq操作符:限定操作符
限定操作符运算返回一个Boolean值,该值指示序列中是否有一些元素满足条件或者是否所有元素都满足条件。
一、All操作符
All方法用来确定是否序列中的所有元素都满足条件。看下面的例子:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace LimitOperation
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] source1 = new string[] { "A", "B", "C", "D", "E", "F" };
- string[] source2 = new string[] { "A", "A", "A", "A", "A", "A" };
- Console.WriteLine(source1.All(w => w == "A")); //输出"False"
- Console.WriteLine(source2.All(w => w == "A")); //输出 "True"
- Console.ReadKey();
- }
- }
- }
结果:
二、Any操作符
先来看看Any的定义:
从定义中可以看出:Any有两个重载方法。Any方法的无参方式用来确定序列是否包含任何元素。Any方法的有参方式用来确定序列中是否有元素满足条件。只要有一个元素符合指定条件即返回true,如果一个符合指定条件的元素都没有则返回false。看下面的例子:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace LimitOperation
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] source1 = new string[] { "A", "B", "C", "D", "E", "F" };
- string[] source2 = new string[] { "A", "A", "A", "A", "A", "A" };
- Console.WriteLine(source1.Any()); // 输出"True"
- Console.WriteLine(source1.Any(w => w == "A")); //输出 "True"
- Console.WriteLine(source2.Any(w => w == "G")); //输出 "False"
- Console.ReadKey();
- }
- }
- }
结果:
三、Contains操作符
Contains方法用来确定序列是否包含满足指定条件的元素。如果有返回true,否则返回false。看下面的例子:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace LimitOperation
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] source1 = new string[] { "A", "B", "C", "D", "E", "F" };
- Console.WriteLine(source1.Contains("A")); //输出 "True"
- Console.WriteLine(source1.Contains("G")); //输出 "False"
- Console.ReadKey();
- }
- }
- }
结果:
Contains还有另外一个重载的方法,看定义:
- public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer);
该重载方法的参数是一个实现IEqualityComparer<TSource>接口的类型。看下面的例子。
定义实现IEqualityComparer<TSource>接口的类型:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace LimitOperation
- {
- /// <summary>
- /// EqualityComparerEquals类实现IEqualityComparer接口
- /// </summary>
- public class EqualityComparerEquals : IEqualityComparer<string>
- {
- public bool Equals(string x, string y)
- {
- return x == y;
- }
- public int GetHashCode(string obj)
- {
- return obj.ToString().GetHashCode();
- }
- }
- }
方法中调用:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace LimitOperation
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] source1 = new string[] { "A", "B", "C", "D", "E", "F" };
- var comparer = source1.Contains("F", new EqualityComparerEquals());
- Console.WriteLine(comparer); //输出"True"
- Console.ReadKey();
- }
- }
- }
结果:
注意:在自定义的类中,x相当于数组中的每一个元素,y是要比较的元素:F。
linq操作符:限定操作符的更多相关文章
- LINQ标准查询操作符(五)
十二.相等操作符 如果两个序列的对应元素相等且这两个序列具有相同数量的元素,则视这两个序列相等. SequenceEqual方法通过并行地枚举两个数据源并比较相应元素来判断两个序列是否相等.如果两个序 ...
- Linq 标准查询操作符三
本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...
- LINQ 标准查询操作符
本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...
- Linq学习之操作符
一.环境搭建 下面将逐步搭建我们学习的环境,这个环境不仅仅是这次需要使用,以后的教程一样需要使用这个环境.所以请大家务必按照 搭建这里的环境否则会影响你后面的学习. 我们用到的几张表 通知消息表: 用 ...
- LINQ标准查询操作符详解(转)
一. 关于LINQ LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders ...
- LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat
七.聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值.最大值等.共有7种LINQ聚合查询操作符:Aggregate.Average.Count.LongCount.Ma ...
- Linq标准查询操作符
Linq的出现让代码简洁了不少.之前在项目中基本都在使用它,但是没有完整的整理过,今天借这个周末,将其进行整理,方便后期对其的使用.Linq的操作可以分为聚合,连接,转换,元素操作符,相等操作,生成 ...
- LINQ标准查询操作符(四) —AsEnumerable,Cast,OfType,ToArray,ToDictionary,ToList,ToLookup,First,Last,ElementAt
十.转换操作符 转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以“As”开头的转换方法可更改源集合的静态类型但不枚举(延迟加载)此源集合.名称以“To”开头的方法可枚举(即时加载)源集合并 ...
- LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse
一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: //查询语法 var query = fro ...
随机推荐
- sql server2008系统表详细说明sys.开头的表
一.库里有多少个表,表名等 select * from INFORMATION_SCHEMA.TABLES 二.查询表.字段.类型.是否主键.长度.小数位.是否允许空.默认值等详细查询 效果: SEL ...
- Nginx做转发
二台服务器,服务器A做域名转外,所有外网的域名都到这台服务器A的80端口上,服务器B内网地址192.168.1.227, 上面IIS搭建了N多网站,以端口来区分,用以前的方式 配置转发 结果发现首页能 ...
- Atitit 获取剪贴板内容
Atitit 获取剪贴板内容 1.1. Java当然有这个功能,但是体积大,先使用script语言实现吧..1 1.2. node.js 好像没这个api ...1 1.3. Ahk也没有..Aut ...
- rabbitmq 二进制安装
# wget -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # ls epel-rele ...
- IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
名词解析: 主机字节序: 不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫做主机序.最常见的有两种 1.Little endian:低字节存高地址,高字节存低地址 2.Bi ...
- 【Android】Gesture Detector
Gesture detector Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等. 这些Ge ...
- Path-to-PegExp的使用
下载: npm install path-to-regexp --save 引入: var pathToRegexp = require('path-to-regexp') 或者 import pat ...
- FIDDLER的使用方法及技巧总结(连载四)FIDDLER通用规则更改
四.FIDDLER通用规则更改 To make custom changes to web requests and responses, use FiddlerScript to add rules ...
- 【Bayesian】贝叶斯决策方法(Bayesian Decision Method)
已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A).这里先解释什么是条件概率: 表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条 ...
- maven invalid loc header
项目部署之后出现如题错误 清除maven资源库原有的jar,重新下载即可解决