linq中的限定操作符
限定操作符運(yùn)算返回一個(gè)Boolean值,該值指示序列中是否有一些元素滿足條件或者是否所有元素都滿足條件。
一、All操作符
All方法用來(lái)確定是否序列中的所有元素都滿足條件??聪旅娴睦樱?/p>
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();
}
}
}結(jié)果:

二、Any操作符
先來(lái)看看Any的定義:

從定義中可以看出:Any有兩個(gè)重載方法。Any方法的無(wú)參方式用來(lái)確定序列是否包含任何元素。Any方法的有參方式用來(lái)確定序列中是否有元素滿足條件。只要有一個(gè)元素符合指定條件即返回true,如果一個(gè)符合指定條件的元素都沒(méi)有則返回false??聪旅娴睦樱?/p>
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();
}
}
}結(jié)果:

三、Contains操作符
Contains方法用來(lái)確定序列是否包含滿足指定條件的元素。如果有返回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();
}
}
}結(jié)果:

Contains還有另外一個(gè)重載的方法,看定義:
public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer);
該重載方法的參數(shù)是一個(gè)實(shí)現(xiàn)IEqualityComparer<TSource>接口的類型。看下面的例子。
定義實(shí)現(xiàn)IEqualityComparer<TSource>接口的類型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LimitOperation
{
/// <summary>
/// EqualityComparerEquals類實(shí)現(xiàn)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();
}
}
}方法中調(diào)用:
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();
}
}
}結(jié)果:

注意:在自定義的類中,x相當(dāng)于數(shù)組中的每一個(gè)元素,y是要比較的元素:F。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET網(wǎng)站管理系統(tǒng)退出 清除瀏覽器緩存,Session的代碼
管理系統(tǒng)退出登陸后,將網(wǎng)址重新輸入后還會(huì)看到用戶登陸后的界面,為了解決這個(gè)問(wèn)題,我采用了以下方法,需要的朋友可以參考下2012-05-05
擴(kuò)展 Entity Framework支持復(fù)雜的過(guò)濾條件(多個(gè)關(guān)鍵字模糊匹配)
之前遇到一個(gè)棘手的Linq to EF查詢的技術(shù)問(wèn)題,現(xiàn)有產(chǎn)品表Product,需要根據(jù)多個(gè)關(guān)鍵字模糊匹配產(chǎn)品名稱, 現(xiàn)將解決方案分享出來(lái),按興趣的朋友可以參考下2012-12-12
Biwen.Settings如何添加對(duì)IConfiguration&IOptions的集成支持
Biwen.Settings?是一個(gè)簡(jiǎn)易的配置項(xiàng)管理模塊,主要的作用就是可以校驗(yàn)并持久化配置項(xiàng),比如將自己的配置存儲(chǔ)到數(shù)據(jù)庫(kù)中,JSON文件中等,這篇文章主要介紹了Biwen.Settings如何添加對(duì)IConfiguration&IOptions的集成支持,需要的朋友可以參考下2024-05-05
asp.net中通過(guò)DropDownList的值去控制TextBox是否可編寫(xiě)的實(shí)現(xiàn)代碼
Web窗體上有兩控件,DropDownList1,TextBox1,當(dāng)DropDownList的值選擇是YES的時(shí)候,TextBox1可編輯,當(dāng)選擇NO的時(shí)候,TextBox1的值為空,并且不能編輯,該如何實(shí)現(xiàn)2012-11-11
在asp.net(C#)中采用自定義標(biāo)簽和XML、XSL顯示數(shù)據(jù)
在asp.net(C#)中采用自定義標(biāo)簽和XML、XSL顯示數(shù)據(jù)的實(shí)現(xiàn)代碼。2009-06-06

