【转】LINQ的基本查询操作符

•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();    }

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

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

转载于:https://www.cnblogs.com/JosephLiu/archive/2010/02/27/1674795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值