from:http://www.cnblogs.com/webabcd/archive/2007/10/17/926855.html
步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary
作者:webabcd
介绍
·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

using
System;

using
System.Data;

using
System.Configuration;

using
System.Collections;

using
System.Linq;

using
System.Web;

using
System.Web.Security;

using
System.Web.UI;

using
System.Web.UI.WebControls;

using
System.Web.UI.WebControls.WebParts;

using
System.Web.UI.HtmlControls;

using
System.Xml.Linq;


using
System.Collections.Generic;

using
DAL;


public
partial
class
LINQ_Summary3 : System.Web.UI.Page



{

NorthwindDataContext _ctx = new NorthwindDataContext();

string[] _ary = null;


protected void Page_Load(object sender, EventArgs e)



{


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

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

"sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs" };


// 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>

void
Summary_First_FirstOrDefault()



{

string s = (from a in _ary

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

// string s = (from a in _ary

select a).FirstOrDefault(a => a.StartsWith("xxx"));

s == null


result.InnerHtml +=+ <br />;

result.InnerHtml ;

}
运行结果
silverlight
Last - 返回集合中的最后一个元素;不延迟
LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)


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

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

Summary_Last_LastOrDefault()



_ary

select a).Last(a select a).LastOrDefault(a => a.StartsWith("sss"));

;

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


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

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

Summary_ElementAt_ElementAtOrDefault()



_ary

select a).ElementAt(3);

select a).ElementAtOrDefault(1000);

;

}
运行结果
css
Contains - 判断集合中是否包含有某一元素;不延迟


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

Summary_Contains()



bool b _ary

select a).Contains(javascript);


result.InnerHtml b.ToString() ;

}
运行结果
True
Any - 判断集合中是否有元素满足某一条件;不延迟


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

Summary_Any()



_ary

select a).Any(p p.Length >10;

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


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

Summary_All()



_ary

select a).All(p ;

}
运行结果
False
Count - 返回集合中的元素个数,返回int;不延迟
LongCount - 返回集合中的元素个数,返回long;不延迟


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

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

Summary_Count_LongCount()



int i _ary

select a).Count(p long i = (from a in _ary

select a).LongCount(p => p.Length > 10); i.ToString() ;

}
运行结果
2
Sum - 集合应为数字类型集合,求其和;不延迟


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

Summary_Sum()



_ary

select a.Length).Sum();


result.InnerHtml ;

}
运行结果
87
Min - 返回集合的最小值;不延迟


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

Summary_Min()



_ary

select a.Length).Min();


result.InnerHtml ;

}
运行结果
2
Max - 返回集合的最大值;不延迟
Max - 返回集合的最大值;不延迟

Summary_Max()


_ary

select a.Length).Max();


result.InnerHtml ;

}
运行结果
12
Average - 集合应为数字类型集合,求其平均值;不延迟


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

Summary_Average()



double d _ary

select a.Length).Average();


result.InnerHtml d.ToString() ;

}
运行结果
5.8
Aggregate - 根据输入的表达式获取一个聚合值;不延迟
87
Cast - 将集合转换为强类型集合;延迟


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

Summary_Aggregate()



以下算法的Aggregate相当于Sum _ary

select a.Length).Aggregate((x, y) x y);


result.InnerHtml ;

}
运行结果


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

Summary_Cast()



{

ArrayList al new ArrayList();

al.Add(asp.net);

al.Add(csharpxhtml);


var list al.Cast<();


foreach ( list)



{

result.InnerHtml ;

};

}
运行结果
asp.net
csharp
xhtml
DefaultIfEmpty - 查询结果为空则返回默认值;延迟


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

Summary_DefaultIfEmpty()



{

var list _ary

where a.Length 100

select a).DefaultIfEmpty(xxx);


list)



;

}
运行结果
xxx
SequenceEqual - 判断两个集合是否相同;不延迟
SequenceEqual - 判断两个集合是否相同;不延迟

Summary_SequenceEqual()



_ary

where a.Length

select a).SequenceEqual(from a _ary

where a.Length

select a);


result.InnerHtml ;

}
运行结果
True
OfType - 过滤集合中的指定类型;延迟


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

Summary_OfType()



{


object[] objects 
{ 1, a2bc };


var list objects.OfType list)



;

}
运行结果
a
b
c
ToArray - 将集合转换为数组;不延迟
ToArray - 将集合转换为数组;不延迟

Summary_ToArray()



[] ary (from p _ctx.Products

where p.ProductName.Length 30

select p.ProductName).ToArray();


ary)



;

}
运行结果
Jack's New England Clam Chowder
Louisiana Fiery Hot Pepper Sauce
Original Frankfurter grüne So?e
Uncle Bob's Organic Dried Pears
ToList - 将集合转换为List<T>集合;不延迟


/**/
<summary>

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

</summary>

void
Summary_ToList()



in10

select a).ToList();


list)



";

}

result.InnerHtml ;

}
运行结果
silverlight
asp.net ajax
ToDictionary - 将集合转换为<K,V>集合;不延迟


/**/
ToDictionary - 将集合转换为<K, V> Summary_ToDictionary()



{

var dic _ctx.Products

where p.ProductName.Length

select p).ToDictionary(p p.ProductID);


(var p dic)



p.Key : p.Value.ProductName ;

}
运行结果
7:Uncle Bob's Organic Dried Pears41:Jack's New England Clam Chowder65:Louisiana Fiery Hot Pepper Sauce77:Original Frankfurter grüne So?e
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。