步步为营VS 2008 + .NET 3.5(6) - LINQ查询操作符之Distinct、Union、Concat、Intersect、Except

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


步步为营VS 2008 + .NET 3.5(6) - LINQ查询操作符之Distinct、Union、Concat、Intersect、Except、Skip、Take、SkipWhile、TakeWhile、Single、SingleOrDefault、Reverse、SelectMany


作者: webabcd


介绍
    ·Distinct -  过滤集合中的相同项;延迟
    ·Union -  连接不同集合,自动过滤相同项;延迟
    ·Concat -  连接不同集合,不会自动过滤相同项;延迟
    ·Intersect -  获取不同集合的相同项(交集);延迟
    ·Except -  从某集合中删除其与另一个集合中相同的项;延迟
    ·Skip -  跳过集合的前n个元素;延迟
    ·Take -  获取集合的前n个元素;延迟
    ·SkipWhile -  直到某一条件成立就停止跳过;延迟
    ·TakeWhile -  直到某一条件成立就停止获取;延迟
    ·Single -  根据表达式返回集合中的某一元素;不延迟
    ·SingleOrDefault -  根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟
    ·Reverse -  对集合反向排序;延迟
    ·SelectMany -  Select选择(一对多);延迟


示例
Summary2.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_Summary2 : 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""wcf""wpf",    
InBlock.gif                         "asp.net""csharp""xhtml""css""javascript",    
InBlock.gif                         "silverlight""linq""wf""sqlserver""asp.net ajax""ssis""ssas""ssrs" }; 
InBlock.gif 
InBlock.gif                 // Distinct - 过滤集合中的相同项;延迟 
InBlock.gif                Summary_Distinct(); 
InBlock.gif 
InBlock.gif                 // Union - 连接不同集合,自动过滤相同项;延迟 
InBlock.gif                Summary_Union(); 
InBlock.gif 
InBlock.gif                 // Concat - 连接不同集合,不会自动过滤相同项;延迟 
InBlock.gif                Summary_Concat(); 
InBlock.gif 
InBlock.gif                 // Intersect - 获取不同集合的相同项(交集);延迟 
InBlock.gif                Summary_Intersect(); 
InBlock.gif 
InBlock.gif                 // Except - 从某集合中删除其与另一个集合中相同的项;延迟 
InBlock.gif                Summary_Except(); 
InBlock.gif 
InBlock.gif                 // Skip - 跳过集合的前n个元素;延迟 
InBlock.gif                 // Take - 获取集合的前n个元素;延迟 
InBlock.gif                Summary_Skip_Take(); 
InBlock.gif 
InBlock.gif                 // SkipWhile - 直到某一条件成立就停止跳过;延迟 
InBlock.gif                 // TakeWhile - 直到某一条件成立就停止获取;延迟 
InBlock.gif                Summary_SkipWhile_TakeWhile(); 
InBlock.gif 
InBlock.gif                 // Single - 根据表达式返回集合中的某一元素;不延迟 
InBlock.gif                 // SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟 
InBlock.gif                Summary_Single_SingleOrDefault(); 
InBlock.gif 
InBlock.gif                 // Reverse - 对集合反向排序;延迟 
InBlock.gif                Summary_Reverse(); 
InBlock.gif 
InBlock.gif                 // SelectMany - Select选择(一对多);延迟 
InBlock.gif                Summary_SelectMany(); 
InBlock.gif        } 
InBlock.gif}
 
Distinct - 过滤集合中的相同项;延迟
/// <summary> 
InBlock.gif         /// Distinct - 过滤集合中的相同项;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Distinct() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).Distinct(); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
asp.net
csharp
xhtml
css
javascript
wcf
wpf
silverlight
linq
wf
sqlserver
asp.net ajax
ssis
ssas
ssrs


Union - 连接不同集合,自动过滤相同项;延迟
/// <summary> 
InBlock.gif         /// Union - 连接不同集合,自动过滤相同项;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Union() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).Take(3).Union((from a  in _ary 
InBlock.gif                                                                                        select a).Take(6)); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
asp.net
csharp
xhtml
css
javascript
wcf


Concat - 连接不同集合,不会自动过滤相同项;延迟
/// <summary> 
InBlock.gif         /// Concat - 连接不同集合,不会自动过滤相同项;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Concat() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).Take(3).Concat((from a  in _ary 
InBlock.gif                                                                                         select a).Take(6)); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
asp.net
csharp
xhtml
asp.net
csharp
xhtml
css
javascript
wcf

Intersect - 获取不同集合的相同项(交集);延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// Intersect - 获取不同集合的相同项(交集);延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Intersect() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).Take(3).Intersect((from a  in _ary 
InBlock.gif                                                                                                select a).Skip(1).Take(3)); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
csharp
xhtml

Except - 从某集合中删除其与另一个集合中相同的项;延迟
/// <summary> 
InBlock.gif         /// Except - 从某集合中删除其与另一个集合中相同的项;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Except() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).Take(3).Except((from a  in _ary 
InBlock.gif                                                                                         select a).Skip(1).Take(3)); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
asp.net

Skip - 跳过集合的前n个元素;延迟
Take - 获取集合的前n个元素;延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// Skip - 跳过集合的前n个元素;延迟 
InBlock.gif         /// Take - 获取集合的前n个元素;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Skip_Take() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).Skip(2).Take(3); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
xhtml
css
javascript


SkipWhile - 直到某一条件成立就停止跳过;延迟
TakeWhile - 直到某一条件成立就停止获取;延迟
/// <summary> 
InBlock.gif         /// SkipWhile - 直到某一条件成立就停止跳过;延迟 
InBlock.gif         /// TakeWhile - 直到某一条件成立就停止获取;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_SkipWhile_TakeWhile() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).SkipWhile(s => s.Length < 8).TakeWhile(s => s.Length > 2); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
javascript
wcf
wpf
asp.net
csharp
xhtml
css
javascript
silverlight
linq


Single - 根据表达式返回集合中的某一元素;不延迟
SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// Single - 根据表达式返回集合中的某一元素;不延迟 
InBlock.gif         /// SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Single_SingleOrDefault() 
InBlock.gif        { 
InBlock.gif                 string s = (from a  in _ary 
InBlock.gif                                        select a).Single(a => a ==  "silverlight"); 
InBlock.gif                 // string s = (from a in _ary 
InBlock.gif                 //                         select a).SingleOrDefault(a => a == "xxx"); 
InBlock.gif                 // s == null 
InBlock.gif 
InBlock.gif                result.InnerHtml += s +  "<br />"
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
silverlight

Reverse - 对集合反向排序;延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// Reverse - 对集合反向排序;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Reverse() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     orderby a.Length ascending 
InBlock.gif                                     select a).Reverse(); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
asp.net ajax
silverlight
javascript
javascript
sqlserver
asp.net
asp.net
csharp
csharp
xhtml
xhtml
ssrs
ssas
ssis
linq
css
wpf
wcf
css
wf


SelectMany - Select选择(一对多);延迟
/// <summary> 
InBlock.gif         /// SelectMany - Select选择(一对多);延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_SelectMany() 
InBlock.gif        { 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     where a.Contains( "."
InBlock.gif                                     select a).SelectMany(a => a.Split('.')); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
 
运行结果
asp
net
asp
net
asp
net ajax



OK
[源码下载]







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

相关文章
|
1月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
16 1
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
65 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
4月前
|
SQL 开发框架 .NET
|
4月前
|
XML SQL 开发框架
|
1月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
1月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
158 2
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
开发框架 .NET
|
4月前
|
开发框架 .NET C#
|
4月前
|
存储 数据库
VB.NET三层之用户查询窗体
VB.NET三层之用户查询窗体
57 0