(转)LINQ查询操作符之Distinct、Union、Concat、Intersect、Except

介绍

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

原文链接:

http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2126613.html

原文地址:https://www.cnblogs.com/MingsonZheng/p/9409293.html

时间: 2024-08-25 22:50:20

(转)LINQ查询操作符之Distinct、Union、Concat、Intersect、Except的相关文章

.NET 3.5(5) - LINQ查询操作符之Select、Where、OrderBy、OrderByDescending

.NET 3.5(5) - LINQ查询操作符之Select.Where.OrderBy.OrderByDescending 介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescending - 按指定表达式对集合倒序排序:延迟    ·GroupBy - 分组:延迟    ·Join - Join查询:延迟    ·GroupJoin - 分组Join查

LINQ查询操作符

一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db=new NorthwindDataContext()) { //查询语法 var query = from e in db.Employees where e.FirstName.StartsWith("M") select e; //方法语法 var q = db.Em

LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescending - 按指定表达式对集合倒序排序:延迟    ·GroupBy - 分组:延迟    ·Join - Join查询:延迟    ·GroupJoin - 分组Join查询:延迟    ·以上查询操作符所对应的查询语法 示例Summary.aspx.cs using System; using

LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count 等

介绍 ·First - 返回集合中的第一个元素:不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值):不延迟 ·Last - 返回集合中的最后一个元素:不延迟 ·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) ·ElementAt - 返回集合中指定索引的元素:不延迟 ·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值):不延迟 ·Contains - 判断集合中是否包含有某一元素:不

&lt;转&gt;LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun

介绍 ·First - 返回集合中的第一个元素:不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值):不延迟 ·Last - 返回集合中的最后一个元素:不延迟 ·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) ·ElementAt - 返回集合中指定索引的元素:不延迟 ·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值):不延迟 ·Contains - 判断集合中是否包含有某一元素:不

C#编程(六十二)---------LINQ标准的查询操作符

LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作"类型"进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. 类型 操作符名称 投影操作符 Select,SelectMany 限制操作符 Where 排序操作符 OrderBy,OrderByDescending,ThenBy,ThenByDescending,Reverse 联接操作符 Join,GroupJoin 分组操作符 GroupBy 串

C#高级编程六十二天----LINQ标准的查询操作符

LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作"类型"进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. 类型 操作符名称 投影操作符 Select,SelectMany 限制操作符 Where 排序操作符 OrderBy,OrderByDescending,ThenBy,ThenByDescending,Reverse 联接操作符 Join,GroupJoin 分组操作符 GroupBy 串

LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931903 七.聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值.最大值等.共有7种LINQ聚合查询操作符:Aggregate.Average.Count.LongCount.Max.Min和Sum. 1. Aggregate Aggregate操作符对集合值执行自定义聚合运算.例如,需要列出所有产品类别清单,每个类别名称之间用顿号连接.以下的代码演示了这一

LINQ标准查询操作符(二)——Join、GroupJoin、GroupBy、Concat、

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931853 四.联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作.这两个数据源对象通过一个共同的值或者属性进行关联. LINQ有两个联接操作符:Join和GroupJoin. 1. Join Join操作符类似于T-SQL中的inner join,它将两个数据源相联接,根据两个数据源中相等的值进行匹配.例如,可以将产品表与产品类别表相联接,得到产品名称和与其相对