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

from:http://www.cnblogs.com/webabcd/archive/2007/10/16/925610.html 

步步为营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

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_Summary2 : 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"
            
"asp.net""csharp""xhtml""css""javascript"
            
"silverlight""linq""wf""sqlserver""asp.net ajax""ssis""ssas""ssrs" }
;

        
// Distinct - 过滤集合中的相同项;延迟
        Summary_Distinct();

        
// Union - 连接不同集合,自动过滤相同项;延迟
        Summary_Union();

        
// Concat - 连接不同集合,不会自动过滤相同项;延迟
        Summary_Concat();

        
// Intersect - 获取不同集合的相同项(交集);延迟
        Summary_Intersect();

        
// Except - 从某集合中删除其与另一个集合中相同的项;延迟
        Summary_Except();

        
// Skip - 跳过集合的前n个元素;延迟
        
// Take - 获取集合的前n个元素;延迟
        Summary_Skip_Take();

        
// SkipWhile - 直到某一条件成立就停止跳过;延迟
        
// TakeWhile - 直到某一条件成立就停止获取;延迟
        Summary_SkipWhile_TakeWhile();

        
// Single - 根据表达式返回集合中的某一元素;不延迟
        
// SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟
        Summary_Single_SingleOrDefault();

        
// Reverse - 对集合反向排序;延迟
        Summary_Reverse();

        
// SelectMany - Select选择(一对多);延迟
        Summary_SelectMany();
    }

}


Distinct - 过滤集合中的相同项;延迟

     /// <summary>
    
/// Distinct - 过滤集合中的相同项;延迟
    
/// </summary>

     void  Summary_Distinct()
    
{
        var ary 
= (from a in _ary
                   select a).Distinct();

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
asp.net
csharp
xhtml
css
javascript
wcf
wpf
silverlight
linq
wf
sqlserver
asp.net ajax
ssis
ssas
ssrs


Union - 连接不同集合,自动过滤相同项;延迟

     /// <summary>
    
/// Union - 连接不同集合,自动过滤相同项;延迟
    
/// </summary>

     void  Summary_Union()
    
{
        var ary 
= (from a in _ary
                   select a).Take(
3).Union((from a in _ary
                                            select a).Take(
6));

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
asp.net
csharp
xhtml
css
javascript
wcf


Concat - 连接不同集合,不会自动过滤相同项;延迟

     /// <summary>
    
/// Concat - 连接不同集合,不会自动过滤相同项;延迟
    
/// </summary>

     void  Summary_Concat()
    
{
        var ary 
= (from a in _ary
                   select a).Take(
3).Concat((from a in _ary
                                             select a).Take(
6));

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
asp.net
csharp
xhtml
asp.net
csharp
xhtml
css
javascript
wcf

Intersect - 获取不同集合的相同项(交集);延迟
运行结果
csharp
xhtml

Except - 从某集合中删除其与另一个集合中相同的项;延迟
运行结果
asp.net

Skip - 跳过集合的前n个元素;延迟
Take - 获取集合的前n个元素;延迟

     /// <summary>
    
/// Intersect - 获取不同集合的相同项(交集);延迟
    
/// </summary>

     void  Summary_Intersect()
    
{
        var ary 
= (from a in _ary
                   select a).Take(
3).Intersect((from a in _ary
                                                select a).Skip(
1).Take(3));

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

 

     /// <summary>
    
/// Except - 从某集合中删除其与另一个集合中相同的项;延迟
    
/// </summary>

     void  Summary_Except()
    
{
        var ary 
= (from a in _ary
                   select a).Take(
3).Except((from a in _ary
                                             select a).Skip(
1).Take(3));

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

 

     /// <summary>
    
/// Skip - 跳过集合的前n个元素;延迟
    
/// Take - 获取集合的前n个元素;延迟
    
/// </summary>

     void  Summary_Skip_Take()
    
{
        var ary 
= (from a in _ary
                   select a).Skip(
2).Take(3);

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
xhtml
css
javascript


SkipWhile - 直到某一条件成立就停止跳过;延迟
TakeWhile - 直到某一条件成立就停止获取;延迟

     /// <summary>
    
/// SkipWhile - 直到某一条件成立就停止跳过;延迟
    
/// TakeWhile - 直到某一条件成立就停止获取;延迟
    
/// </summary>

     void  Summary_SkipWhile_TakeWhile()
    
{
        var ary 
= (from a in _ary
                   select a).SkipWhile(s 
=> s.Length < 8).TakeWhile(s => s.Length > 2);

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
javascript
wcf
wpf
asp.net
csharp
xhtml
css
javascript
silverlight
linq


Single - 根据表达式返回集合中的某一元素;不延迟
SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟
silverlight

Reverse - 对集合反向排序;延迟

     /// <summary>
    
/// Single - 根据表达式返回集合中的某一元素;不延迟
    
/// SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟
    
/// </summary>

     void  Summary_Single_SingleOrDefault()
    
{
        
string s = (from a in _ary
                    select a).Single(a 
=> a == "silverlight");
        
// string s = (from a in _ary
        
//             select a).SingleOrDefault(a => a == "xxx");
        
// s == null

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

运行结果

     /// <summary>
    
/// Reverse - 对集合反向排序;延迟
    
/// </summary>

     void  Summary_Reverse()
    
{
        var ary 
= (from a in _ary
                   orderby a.Length ascending
                   select a).Reverse();

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
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>
    
/// SelectMany - Select选择(一对多);延迟
    
/// </summary>

     void  Summary_SelectMany()
    
{
        var ary 
= (from a in _ary
                   where a.Contains(
".")
                   select a).SelectMany(a 
=> a.Split('.'));

        
foreach (string s in ary)
        
{
            result.InnerHtml 
+= s + "<br />";
        }

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

运行结果
asp
net
asp
net
asp
net ajax

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET 3.5 是微软推出的一种开发框架,它提供了一系列的类库和工具,帮助开发人员创建和管理各种类型的应用程序。下面是一些.NET 3.5 实例源码的介绍: 1. ASP.NET 网站开发:可以使用.NET 3.5 创建功能丰富的网站应用程序。通过使用 ASP.NET WebForms 或 ASP.NET MVC 架构,可以轻松地构建用户友好的网站界面,并使用.NET 3.5 提供的特性,如数据绑定、会话管理和安全性等。 2. Windows 窗体应用程序:使用.NET 3.5,可以创建各种类型的 Windows 窗体应用程序。通过 Visual Studio IDE,可以简化界面设计和事件处理的过程。开发人员可以使用.NET 3.5 中的控件和功能,如菜单、工具栏、对话框和数据库访问等来构建功能强大的应用程序。 3. WCF 服务:.NET 3.5 基于 Windows Communication Foundation (WCF) 提供了一种创建分布式服务的方式。通过 WCF,可以实现跨平台和跨网络的通信,支持不同传输协议和数据格式。开发人员可以使用.NET 3.5 提供的特性,如服务契约、终结点配置和安全性来开发可靠的分布式应用程序。 4. LINQ 查询.NET 3.5 引入了语言集成查询LINQ)的概念。通过使用 LINQ,可以更直观地查询和操作数据。开发人员可以使用 LINQ 查询语句来访问和操作不同类型的数据源,如对象集合、数据库和 XML 文件等。 5. 并行编程:.NET 3.5 引入了并行编程的支持,使开发人员能够更高效地利用多核处理器的性能。通过使用 Parallel 类库和并行任务库(Task Parallel Library,TPL),开发人员可以轻松地编写并行代码,提高应用程序的性能和响应能力。 总之,.NET 3.5 提供了丰富的功能和类库,帮助开发人员更轻松地构建各种类型的应用程序。无论是创建网站、Windows 窗体应用程序、分布式服务还是进行数据查询和并行编程,都可以使用.NET 3.5 提供的功能和特性来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值