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

简介:
[索引页]
[源码下载]


步步为营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
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Collections; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif using System.Xml.Linq; 
InBlock.gif 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using DAL; 
InBlock.gif 
InBlock.gif public partial  class LINQ_Summary3 : System.Web.UI.Page 
InBlock.gif
InBlock.gif        NorthwindDataContext _ctx =  new NorthwindDataContext(); 
InBlock.gif         string[] _ary =  null
InBlock.gif 
InBlock.gif         protected  void Page_Load( object sender, EventArgs e) 
InBlock.gif        { 
InBlock.gif                _ary =  new  string[] {  "asp.net""csharp""xhtml""css""javascript",    
InBlock.gif                         "wcf""wpf""silverlight""linq""wf",    
InBlock.gif                         "sqlserver""asp.net ajax""ssis""ssas""ssrs" }; 
InBlock.gif 
InBlock.gif                 // First - 返回集合中的第一个元素;不延迟 
InBlock.gif                 // FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟 
InBlock.gif                Summary_First_FirstOrDefault(); 
InBlock.gif 
InBlock.gif                 // Last - 返回集合中的最后一个元素;不延迟 
InBlock.gif                 // LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) 
InBlock.gif                Summary_Last_LastOrDefault(); 
InBlock.gif 
InBlock.gif                 // ElementAt - 返回集合中指定索引的元素;不延迟 
InBlock.gif                 // ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟 
InBlock.gif                Summary_ElementAt_ElementAtOrDefault(); 
InBlock.gif 
InBlock.gif                 // Contains - 判断集合中是否包含有某一元素;不延迟 
InBlock.gif                Summary_Contains(); 
InBlock.gif 
InBlock.gif                 // Any - 判断集合中是否有元素满足某一条件;不延迟 
InBlock.gif                Summary_Any(); 
InBlock.gif 
InBlock.gif                 // All - 判断集合中是否所有元素都满足某一条件;不延迟 
InBlock.gif                Summary_All(); 
InBlock.gif 
InBlock.gif                 // Count - 返回集合中的元素个数,返回int;不延迟 
InBlock.gif                 // LongCount - 返回集合中的元素个数,返回long;不延迟 
InBlock.gif                Summary_Count_LongCount(); 
InBlock.gif 
InBlock.gif                 // Sum - 集合应为数字类型集合,求其和;不延迟 
InBlock.gif                Summary_Sum(); 
InBlock.gif 
InBlock.gif                 // Min - 返回集合的最小值;不延迟 
InBlock.gif                Summary_Min(); 
InBlock.gif 
InBlock.gif                 // Max - 返回集合的最大值;不延迟 
InBlock.gif                Summary_Max(); 
InBlock.gif 
InBlock.gif                 // Average - 集合应为数字类型集合,求其平均值;不延迟 
InBlock.gif                Summary_Average(); 
InBlock.gif 
InBlock.gif                 // Aggregate - 根据输入的表达式获取一个聚合值;不延迟 
InBlock.gif                Summary_Aggregate(); 
InBlock.gif 
InBlock.gif                 // Cast - 将集合转换为强类型集合;延迟 
InBlock.gif                Summary_Cast(); 
InBlock.gif 
InBlock.gif                 // DefaultIfEmpty - 查询结果为空则返回默认值;延迟 
InBlock.gif                Summary_DefaultIfEmpty(); 
InBlock.gif 
InBlock.gif                 // SequenceEqual - 判断两个集合是否相同;不延迟 
InBlock.gif                Summary_SequenceEqual(); 
InBlock.gif 
InBlock.gif                 // OfType - 过滤集合中的指定类型;延迟 
InBlock.gif                Summary_OfType(); 
InBlock.gif 
InBlock.gif                 // ToArray - 将集合转换为数组;不延迟 
InBlock.gif                Summary_ToArray(); 
InBlock.gif 
InBlock.gif                 // ToList - 将集合转换为List<T>集合;不延迟 
InBlock.gif                Summary_ToList(); 
InBlock.gif 
InBlock.gif                 // ToDictionary - 将集合转换为<K, V>集合;不延迟 
InBlock.gif                Summary_ToDictionary(); 
InBlock.gif        } 
InBlock.gif}
 
First - 返回集合中的第一个元素;不延迟
FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟
/// <summary> 
InBlock.gif         /// First - 返回集合中的第一个元素;不延迟 
InBlock.gif         /// FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_First_FirstOrDefault() 
InBlock.gif        { 
InBlock.gif                 string s = (from a  in _ary 
InBlock.gif                                        select a).First(a => a.StartsWith( "s")); 
InBlock.gif                 // string s = (from a in _ary 
InBlock.gif                 //                         select a).FirstOrDefault(a => a.StartsWith("xxx")); 
InBlock.gif                 // s == null 
InBlock.gif 
InBlock.gif                result.InnerHtml += s +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
silverlight

Last - 返回集合中的最后一个元素;不延迟
LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)
/// <summary> 
InBlock.gif         /// Last - 返回集合中的最后一个元素;不延迟 
InBlock.gif         /// LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Last_LastOrDefault() 
InBlock.gif        { 
InBlock.gif                 string s = (from a  in _ary 
InBlock.gif                                        select a).Last(a => a.StartsWith( "s")); 
InBlock.gif                 // string s = (from a in _ary 
InBlock.gif                 //                         select a).LastOrDefault(a => a.StartsWith("sss")); 
InBlock.gif                 // s == null 
InBlock.gif 
InBlock.gif                result.InnerHtml += s +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
ssrs

ElementAt - 返回集合中指定索引的元素;不延迟
ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟
/// <summary> 
InBlock.gif         /// ElementAt - 返回集合中指定索引的元素;不延迟 
InBlock.gif         /// ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_ElementAt_ElementAtOrDefault() 
InBlock.gif        { 
InBlock.gif                 string s = (from a  in _ary 
InBlock.gif                                        select a).ElementAt(3); 
InBlock.gif                 // string s = (from a in _ary 
InBlock.gif                 //                         select a).ElementAtOrDefault(1000); 
InBlock.gif                 // s == null 
InBlock.gif 
InBlock.gif                result.InnerHtml += s +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
css

Contains - 判断集合中是否包含有某一元素;不延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// Contains - 判断集合中是否包含有某一元素;不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Contains() 
InBlock.gif        { 
InBlock.gif                 bool b = (from a  in _ary 
InBlock.gif                                    select a).Contains( "javascript"); 
InBlock.gif 
InBlock.gif                result.InnerHtml += b.ToString() +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
True

Any - 判断集合中是否有元素满足某一条件;不延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// Any - 判断集合中是否有元素满足某一条件;不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Any() 
InBlock.gif        { 
InBlock.gif                 bool b = (from a  in _ary 
InBlock.gif                                    select a).Any(p => p.Length > 10); 
InBlock.gif 
InBlock.gif                result.InnerHtml += b.ToString() +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
True

All - 判断集合中是否所有元素都满足某一条件;不延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// All - 判断集合中是否所有元素都满足某一条件;不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_All() 
InBlock.gif        { 
InBlock.gif                 bool b = (from a  in _ary 
InBlock.gif                                    select a).All(p => p.Length > 10); 
InBlock.gif 
InBlock.gif                result.InnerHtml += b.ToString() +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
False

Count - 返回集合中的元素个数,返回int;不延迟
LongCount - 返回集合中的元素个数,返回long;不延迟
/// <summary> 
InBlock.gif         /// Count - 返回集合中的元素个数,返回int;不延迟 
InBlock.gif         /// LongCount - 返回集合中的元素个数,返回long;不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Count_LongCount() 
InBlock.gif        { 
InBlock.gif                 int i = (from a  in _ary 
InBlock.gif                                 select a).Count(p => p.Length > 10); 
InBlock.gif                 // long i = (from a in _ary 
InBlock.gif                 //                     select a).LongCount(p => p.Length > 10); 
InBlock.gif 
InBlock.gif                result.InnerHtml += i.ToString() +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
2
 
 


     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/345005 ,如需转载请自行联系原作者


相关文章
|
4月前
|
SQL 开发框架 .NET
|
29天前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
4月前
|
开发框架 .NET
|
4月前
|
开发框架 .NET C#
|
SQL 存储 .NET
使用LINQ Expression构建Que“.NET研究”ry Object
  这个问题来源于Apworks应用开发框架的设计。由于命令与查询职责的分离,使得基于CQRS体系结构风格的应用系统的外部存储系统的结构变得简单起来:在“命令”部分,简单地说,只需要 Event Store和Snapshot Store来保存Domain Model;而“查询”部分,则又是基于事件派送与侦听的系统集成。
966 0
|
SQL .NET
看看Entity Framework 4生成的复杂的分页SQL语“.NET研究”句
  之前发现Ent上海网站建设ity Framework 4生成的COUNT查询语句问题,今天又发现它生成的分页SQL语句问题,而LINQ to SQL却不存在这个问题。   >>> 来看一看,瞧一瞧!   上代码:   看生成的SQL语句:   1. Entity Framework生成的SQL:   一个TOP,三个FROM。
1052 0
|
测试技术
三种属性操作性能比较:PropertyInfo + Expression Tree + Del“.NET研究”egate.CreateDelegate
  在《上篇》中,我比较了三种属性操作的性能:直接操作,单纯通过PropertyInfo反射和IL Emit。本篇继续讨论这个话题,我们再引入另外两种额外的属性操作方式:Expression Tree(这和IL Emit基本一致)和通过Delegate的静态方法CreateDelegate创建相应的委托进行属性的赋值和取值。
956 0
|
BI C#
一起谈.NET技术,C#特性Attribute的实际应用之:代码统计分析
  日常工作中,需要为程序集提供统计分析:   1:程序集方法数;   2:开发人员数目及各自所开发或REVIEW的方法数;   3:测试中,被标注有BUG的数目;   4:直接查看方法的IL代码;   鉴于以上统计的需要,特开发本EXE。
1109 0
|
SQL 存储 .NET
一起谈.NET技术,使用LINQ Expression构建Query Object
  这个问题来源于Apworks应用开发框架的设计。由于命令与查询职责的分离,使得基于CQRS体系结构风格的应用系统的外部存储系统的结构变得简单起来:在“命令”部分,简单地说,只需要 Event Store和Snapshot Store来保存Domain Model;而“查询”部分,则又是基于事件派送与侦听的系统集成。
949 0
|
SQL .NET C#
一起谈.NET技术,Linq to SQL T4 代码生成器 (-)访问 DataContext 对象
这个工具,是在一个项目中提取出来的,现在免费提供给大家使用。 本文介绍的 Linq to SQL T4 代码生成器有如下特点: 1、支持 dbml 文件。能够访问 dbml 设计器中的对象。 2、可能通多修改模版来生成代码。
1108 0