LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun


介绍

·First-返回集合中的第一个元素;不延迟

·FirstOrDefault-返回集合中的第一个元素(如果没有则返回默认值);不延迟

·Last-返回集合中的最后一个元素;不延迟

·LastOrDefault-返回集合中的最后一个元素(如果没有则返回默认值)

·ElementAt-返回集合中指定索引的元素;不延迟

·ElementAtOrDefault-返回集合中指定索引的元素(如果没有则返回默认值);不延迟

·Contains-判断集合中是否包含有某一元素;不延迟

·Any-判断集合中是否有元素满足某一条件;不延迟

·All-判断集合中是否所有元素都满足某一条件;不延迟

·Count-返回集合中的元素个数,返回int;不延迟

·LongCount-返回集合中的元素个数,返回long;不延迟

·Sum-集合应为数字类型集合,求其和;不延迟

·Min-返回集合的最小值;不延迟

·Max-返回集合的最大值;不延迟

·Average-集合应为数字类型集合,求其平均值;不延迟

·Aggregate-根据输入的表达式获取一个聚合值;不延迟

·Cast-将集合转换为强类型集合;延迟

·DefaultIfEmpty-查询结果为空则返回默认值;延迟

·SequenceEqual-判断两个集合是否相同;不延迟

·OfType-过滤集合中的指定类型;延迟

·ToArray-将集合转换为数组;不延迟

·ToList-将集合转换为List<T>集合;不延迟

·ToDictionary-将集合转换为<K,V>集合;不延迟


示例

Summary3.aspx.cs

usingSystem;

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Collections;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Security;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

usingSystem.Web.UI.WebControls.WebParts;

usingSystem.Web.UI.HtmlControls;

usingSystem.Xml.Linq;

usingSystem.Collections.Generic;

usingDAL;

publicpartialclassLINQ_Summary3:System.Web.UI.Page

{

NorthwindDataContext_ctx=newNorthwindDataContext();

string[]_ary=null;

protectedvoidPage_Load(objectsender,EventArgse)

{

_ary=newstring[]{"asp.net","csharp","xhtml","css","javascript",

"wcf","wpf","silverlight","linq","wf",

"sqlserver","asp.netajax","ssis","ssas","***s"};

//First-返回集合中的第一个元素;不延迟

//FirstOrDefault-返回集合中的第一个元素(如果没有则返回默认值);不延迟

Summary_First_FirstOrDefault();

//Last-返回集合中的最后一个元素;不延迟

//LastOrDefault-返回集合中的最后一个元素(如果没有则返回默认值)

Summary_Last_LastOrDefault();

//ElementAt-返回集合中指定索引的元素;不延迟

//ElementAtOrDefault-返回集合中指定索引的元素(如果没有则返回默认值);不延迟

Summary_ElementAt_ElementAtOrDefault();

//Contains-判断集合中是否包含有某一元素;不延迟

Summary_Contains();

//Any-判断集合中是否有元素满足某一条件;不延迟

Summary_Any();

//All-判断集合中是否所有元素都满足某一条件;不延迟

Summary_All();

//Count-返回集合中的元素个数,返回int;不延迟

//LongCount-返回集合中的元素个数,返回long;不延迟

Summary_Count_LongCount();

//Sum-集合应为数字类型集合,求其和;不延迟

Summary_Sum();

//Min-返回集合的最小值;不延迟

Summary_Min();

//Max-返回集合的最大值;不延迟

Summary_Max();

//Average-集合应为数字类型集合,求其平均值;不延迟

Summary_Average();

//Aggregate-根据输入的表达式获取一个聚合值;不延迟

Summary_Aggregate();

//Cast-将集合转换为强类型集合;延迟

Summary_Cast();

//DefaultIfEmpty-查询结果为空则返回默认值;延迟

Summary_DefaultIfEmpty();

//SequenceEqual-判断两个集合是否相同;不延迟

Summary_SequenceEqual();

//OfType-过滤集合中的指定类型;延迟

Summary_OfType();

//ToArray-将集合转换为数组;不延迟

Summary_ToArray();

//ToList-将集合转换为List<T>集合;不延迟

Summary_ToList();

//ToDictionary-将集合转换为<K,V>集合;不延迟

Summary_ToDictionary();

}

}

First-返回集合中的第一个元素;不延迟

FirstOrDefault-返回集合中的第一个元素(如果没有则返回默认值);不延迟

/**////<summary>

///First-返回集合中的第一个元素;不延迟

///FirstOrDefault-返回集合中的第一个元素(如果没有则返回默认值);不延迟

///</summary>

voidSummary_First_FirstOrDefault()

{

strings=(fromain_ary

selecta).First(a=>a.StartsWith("s"));

//strings=(fromain_ary

//selecta).FirstOrDefault(a=>a.StartsWith("xxx"));

//s==null

result.InnerHtml+=s+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

silverlight

Last-返回集合中的最后一个元素;不延迟

LastOrDefault-返回集合中的最后一个元素(如果没有则返回默认值)

/**////<summary>

///Last-返回集合中的最后一个元素;不延迟

///LastOrDefault-返回集合中的最后一个元素(如果没有则返回默认值)

///</summary>

voidSummary_Last_LastOrDefault()

{

strings=(fromain_ary

selecta).Last(a=>a.StartsWith("s"));

//strings=(fromain_ary

//selecta).LastOrDefault(a=>a.StartsWith("sss"));

//s==null

result.InnerHtml+=s+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

***s

ElementAt-返回集合中指定索引的元素;不延迟

ElementAtOrDefault-返回集合中指定索引的元素(如果没有则返回默认值);不延迟

/**////<summary>

///ElementAt-返回集合中指定索引的元素;不延迟

///ElementAtOrDefault-返回集合中指定索引的元素(如果没有则返回默认值);不延迟

///</summary>

voidSummary_ElementAt_ElementAtOrDefault()

{

strings=(fromain_ary

selecta).ElementAt(3);

//strings=(fromain_ary

//selecta).ElementAtOrDefault(1000);

//s==null

result.InnerHtml+=s+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

css

Contains-判断集合中是否包含有某一元素;不延迟

/**////<summary>

///Contains-判断集合中是否包含有某一元素;不延迟

///</summary>

voidSummary_Contains()

{

boolb=(fromain_ary

selecta).Contains("javascript");

result.InnerHtml+=b.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

True

Any-判断集合中是否有元素满足某一条件;不延迟

/**////<summary>

///Any-判断集合中是否有元素满足某一条件;不延迟

///</summary>

voidSummary_Any()

{

boolb=(fromain_ary

selecta).Any(p=>p.Length>10);

result.InnerHtml+=b.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

True

All-判断集合中是否所有元素都满足某一条件;不延迟

/**////<summary>

///All-判断集合中是否所有元素都满足某一条件;不延迟

///</summary>

voidSummary_All()

{

boolb=(fromain_ary

selecta).All(p=>p.Length>10);

result.InnerHtml+=b.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

False

Count-返回集合中的元素个数,返回int;不延迟

LongCount-返回集合中的元素个数,返回long;不延迟

/**////<summary>

///Count-返回集合中的元素个数,返回int;不延迟

///LongCount-返回集合中的元素个数,返回long;不延迟

///</summary>

voidSummary_Count_LongCount()

{

inti=(fromain_ary

selecta).Count(p=>p.Length>10);

//longi=(fromain_ary

//selecta).LongCount(p=>p.Length>10);

result.InnerHtml+=i.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

2

Sum-集合应为数字类型集合,求其和;不延迟

/**////<summary>

///Sum-集合应为数字类型集合,求其和;不延迟

///</summary>

voidSummary_Sum()

{

inti=(fromain_ary

selecta.Length).Sum();

result.InnerHtml+=i.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

87

Min-返回集合的最小值;不延迟

/**////<summary>

///Min-返回集合的最小值;不延迟

///</summary>

voidSummary_Min()

{

inti=(fromain_ary

selecta.Length).Min();

result.InnerHtml+=i.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

2

Max-返回集合的最大值;不延迟

/**////<summary>

///Max-返回集合的最大值;不延迟

///</summary>

voidSummary_Max()

{

inti=(fromain_ary

selecta.Length).Max();

result.InnerHtml+=i.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

12

Average-集合应为数字类型集合,求其平均值;不延迟

/**////<summary>

///Average-集合应为数字类型集合,求其平均值;不延迟

///</summary>

voidSummary_Average()

{

doubled=(fromain_ary

selecta.Length).Average();

result.InnerHtml+=d.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

5.8

Aggregate-根据输入的表达式获取一个聚合值;不延迟

/**////<summary>

///Aggregate-根据输入的表达式获取一个聚合值;不延迟

///</summary>

voidSummary_Aggregate()

{

//以下算法的Aggregate相当于Sum

doubled=(fromain_ary

selecta.Length).Aggregate((x,y)=>x+y);

result.InnerHtml+=d.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

87

Cast-将集合转换为强类型集合;延迟

/**////<summary>

///Cast-将集合转换为强类型集合;延迟

///</summary>

voidSummary_Cast()

{

ArrayListal=newArrayList();

al.Add("asp.net");

al.Add("csharp");

al.Add("xhtml");

varlist=al.Cast<string>();

foreach(stringsinlist)

{

result.InnerHtml+=s+"<br/>";

}

result.InnerHtml+="<br/>";

}运行结果

asp.net

csharp

xhtml

DefaultIfEmpty-查询结果为空则返回默认值;延迟

/**////<summary>

///DefaultIfEmpty-查询结果为空则返回默认值;延迟

///</summary>

voidSummary_DefaultIfEmpty()

{

varlist=(fromain_ary

wherea.Length>100

selecta).DefaultIfEmpty("xxx");

foreach(stringsinlist)

{

result.InnerHtml+=s+"<br/>";

}

result.InnerHtml+="<br/>";

}运行结果

xxx

SequenceEqual-判断两个集合是否相同;不延迟

/**////<summary>

///SequenceEqual-判断两个集合是否相同;不延迟

///</summary>

voidSummary_SequenceEqual()

{

boolb=(fromain_ary

wherea.Length>10

selecta).SequenceEqual(fromain_ary

wherea.Length>10

selecta);

result.InnerHtml+=b.ToString()+"<br/>";

result.InnerHtml+="<br/>";

}运行结果

True

OfType-过滤集合中的指定类型;延迟

/**////<summary>

///OfType-过滤集合中的指定类型;延迟

///</summary>

voidSummary_OfType()

{

object[]objects={1,"a",2,"b",3,"c"};

varlist=objects.OfType<string>();

foreach(stringsinlist)

{

result.InnerHtml+=s+"<br/>";

}

result.InnerHtml+="<br/>";

}运行结果

a

b

c

ToArray-将集合转换为数组;不延迟

/**////<summary>

///ToArray-将集合转换为数组;不延迟

///</summary>

voidSummary_ToArray()

{

string[]ary=(frompin_ctx.Products

wherep.ProductName.Length>30

selectp.ProductName).ToArray();

foreach(stringsinary)

{

result.InnerHtml+=s+"<br/>";

}

result.InnerHtml+="<br/>";

}运行结果

Jack'sNewEnglandClamChowder

LouisianaFieryHotPepperSauce

OriginalFrankfurtergrüneSo?e

UncleBob'sOrganicDriedPears

ToList-将集合转换为List<T>集合;不延迟

/**////<summary>

///ToList-将集合转换为List<T>集合;不延迟

///</summary>

voidSummary_ToList()

{

varlist=(fromain_ary

wherea.Length>10

selecta).ToList();

foreach(stringsinlist)

{

result.InnerHtml+=s+"<br/>";

}

result.InnerHtml+="<br/>";

}运行结果

silverlight

asp.netajax

ToDictionary-将集合转换为<K,V>集合;不延迟

/**////<summary>

///ToDictionary-将集合转换为<K,V>集合;不延迟

///</summary>

voidSummary_ToDictionary()

{

vardic=(frompin_ctx.Products

wherep.ProductName.Length>30

selectp).ToDictionary(p=>p.ProductID);

foreach(varpindic)

{

result.InnerHtml+=p.Key+":"+p.Value.ProductName+"<br/>";

}

result.InnerHtml+="<br/>";

}运行结果

7:UncleBob'sOrganicDriedPears

41:Jack'sNewEnglandClamChowder

65:LouisianaFieryHotPepperSauce

77:OriginalFrankfurtergrüneSo?e