您的位置:首页 > 编程语言 > ASP

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

2007-10-16 08:11 676 查看
[索引页]
[源码下载]


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

作者: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 - 获取不同集合的相同项(交集);延迟




    /**//// <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 />";


    }



运行结果
csharp

xhtml

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




    /**//// <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 />";


    }
运行结果
asp.net

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




    /**//// <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 - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟




    /**//// <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 />";


    }
运行结果
silverlight

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




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

OK
[源码下载]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐