步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun

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  

1a2bc };


        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

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...