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

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

View Code
 1 Summary.aspx.cs
 2 
 3 using System;
 4 using System.Data;
 5 using System.Configuration;
 6 using System.Collections;
 7 using System.Linq;
 8 using System.Web;
 9 using System.Web.Security;
10 using System.Web.UI;
11 using System.Web.UI.WebControls;
12 using System.Web.UI.WebControls.WebParts;
13 using System.Web.UI.HtmlControls;
14 using System.Xml.Linq;
15 
16 using System.Collections.Generic;
17 using DAL;
18 
19 public partial class LINQ_Summary : System.Web.UI.Page
20 {
21     NorthwindDataContext _ctx = new NorthwindDataContext();
22     string[] _ary = null;
23 
24     protected void Page_Load(object sender, EventArgs e)
25     {
26         _ary = new string[] { "asp.net", "csharp", "xhtml", "css", "javascript", 
27             "wcf", "wpf", "silverlight", "linq", "wf", 
28             "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs" };
29 
30         // Select - Select选择;延迟
31         Summary_Select();
32 
33         // Where - Where查询;延迟
34         Summary_Where();
35 
36         // OrderBy - 按指定表达式对集合正序排序;延迟
37         // OrderByDescending - 按指定表达式对集合倒序排序;延迟
38         Summary_OrderBy_OrderByDescending();
39 
40         // GroupBy - 分组;延迟
41         Summary_GroupBy();
42 
43         // Join - Join查询;延迟
44         Summary_Join();
45 
46         // GroupJoin - 分组Join查询;延迟
47         Summary_GroupJoin();
48     }
49 }

 


Select - Select选择;延迟

View Code
 1     /// <summary>
 2     /// Select - Select选择;延迟
 3     /// </summary>
 4     void Summary_Select()
 5     {
 6         // 使用Select查询操作符
 7         var categories = _ctx.Categories.Select(
 8             c => new { CategoryName = "类别名称:" + c.CategoryName });
 9 
10         foreach (var c in categories)
11         {
12             result.InnerHtml += c.CategoryName + "<br />";
13         }
14         result.InnerHtml += "<br />";
15 
16 
17         // 与上面的Select查询操作符相对应的查询语法
18         var categories2 = from c in _ctx.Categories
19                           select new { CategoryName = "类别名称:" + c.CategoryName };
20 
21         foreach (var c in categories2)
22         {
23             result.InnerHtml += c.CategoryName + "<br />";
24         }
25         result.InnerHtml += "<br />";
26     }

 

运行结果
类别名称:Beverages
类别名称:Condiments
类别名称:Confections
类别名称:Dairy Products
类别名称:Grains/Cereals
类别名称:Meat/Poultry
类别名称:Produce
类别名称:Seafood

 

Where - Where查询;延迟

View Code
 1     //// <summary>
 2     /// Where - Where查询;延迟
 3     /// </summary>
 4     void Summary_Where()
 5     {
 6         // 使用Where查询操作符
 7         var ary = _ary.Where(a => a.StartsWith("w") && a.EndsWith("f"));
 8 
 9         foreach (string s in ary)
10         {
11             result.InnerHtml += s + "<br />";
12         }
13         result.InnerHtml += "<br />";
14 
15 
16         // 与上面的Where查询操作符相对应的查询语法
17         var ary2 = from a in _ary
18                    where a.StartsWith("w") && a.EndsWith("f")
19                    select a;
20 
21         foreach (string s in ary2)
22         {
23             result.InnerHtml += s + "<br />";
24         }
25         result.InnerHtml += "<br />";
26     }

 

 


运行结果
wcf
wpf
wf

OrderBy - 按指定表达式对集合正序排序;延迟
OrderByDescending - 按指定表达式对集合倒序排序;延迟

View Code
 1     /// <summary>
 2     /// OrderBy - 按指定表达式对集合正序排序;延迟
 3     /// OrderByDescending - 按指定表达式对集合倒序排序;延迟
 4     /// </summary>
 5     void Summary_OrderBy_OrderByDescending()
 6     {
 7         // 使用OrderBy查询操作符
 8         var ary = (from a in _ary
 9                    select a).OrderBy(a => a.Length); // OrderByDescending与OrderBy用法相同
10 
11         foreach (string s in ary)
12         {
13             result.InnerHtml += s + "<br />";
14         }
15         result.InnerHtml += "<br />";
16 
17 
18         // 与上面的OrderBy查询操作符相对应的查询语法
19         var ary2 = from a in _ary
20                    orderby a.Length ascending // orderby xxx descending与orderby xxx ascending用法相同
21                    select a;
22 
23         foreach (string s in ary2)
24         {
25             result.InnerHtml += s + "<br />";
26         }
27         result.InnerHtml += "<br />";
28     }

 

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

GroupBy - 分组;延迟

View Code
 1      /// <summary>
 2     /// GroupBy - 分组;延迟
 3     /// </summary>
 4     void Summary_GroupBy()
 5     {
 6         // 使用GroupBy查询操作符
 7         var list = (from a in _ary
 8                     select a).GroupBy(a => a.Length).Select(
 9                         g => new { Group = g.Key, Member = g });
10 
11         foreach (var g in list)
12         {
13             result.InnerHtml += g.Group + "个字符:<br />";
14 
15             foreach (string s in g.Member)
16             {
17                 result.InnerHtml += "--" + s + "<br />";
18             }
19         }
20         result.InnerHtml += "<br />";
21 
22 
23         // 与上面的GroupBy查询操作符相对应的查询语法
24         var list2 = from a in _ary
25                     group a by a.Length into g
26                     select new { Group = g.Key, Member = g };
27 
28         foreach (var g in list2)
29         {
30             result.InnerHtml += g.Group + "个字符:<br />";
31 
32             foreach (string s in g.Member)
33             {
34                 result.InnerHtml += "--" + s + "<br />";
35             }
36         }
37         result.InnerHtml += "<br />";
38     }

 

运行结果
7个字符:
--asp.net
6个字符:
--csharp
5个字符:
--xhtml
3个字符:
--css
--wcf
--wpf
10个字符:
--javascript
11个字符:
--silverlight
4个字符:
--linq
--ssis
--ssas
--ssrs
2个字符:
--wf
9个字符:
--sqlserver
12个字符:
--asp.net ajax

Join - Join查询;延迟

View Code
 1     /// <summary>
 2     /// Join - Join查询;延迟
 3     /// </summary>
 4     void Summary_Join()
 5     {
 6         // 使用Join查询操作符
 7         var products = _ctx.Products.Join(
 8             _ctx.Categories, 
 9             p => p.CategoryID, 
10             c => c.CategoryID, 
11             (p, c) => new { c.CategoryName, p.ProductName }).Take(5);
12 
13         foreach (var p in products)
14         {
15             result.InnerHtml += p.CategoryName + " - " + p.ProductName + "<br />";
16         }
17         result.InnerHtml += "<br />";
18 
19 
20         // 与上面的Join查询操作符相对应的查询语法
21         var products2 = (from p in _ctx.Products
22                          join c in _ctx.Categories
23                          on p.CategoryID equals c.CategoryID
24                          select new { c.CategoryName, p.ProductName }).Take(5);
25 
26         foreach (var p in products2)
27         {
28             result.InnerHtml += p.CategoryName + " - " + p.ProductName + "<br />";
29         }
30         result.InnerHtml += "<br />";
31     }

 

运行结果
Beverages - Chai
Beverages - Chang
Condiments - Aniseed Syrup
Condiments - Chef Anton's Cajun Seasoning
Condiments - Chef Anton's Gumbo Mix

GroupJoin - 分组Join查询;延迟

View Code
 1     /// <summary>
 2     /// GroupJoin - 分组Join查询;延迟
 3     /// </summary>
 4     void Summary_GroupJoin()
 5     {
 6         // 使用GroupJoin查询操作符
 7         var products = _ctx.Categories.GroupJoin(
 8             _ctx.Products, 
 9             c => c.CategoryID, 
10             p => p.CategoryID, 
11             (p, g) => new { p.CategoryName, ProductCount = g.Count() });
12 
13         foreach (var g in products)
14         {
15             result.InnerHtml += g.CategoryName + "" + g.ProductCount + "<br />";
16 
17         }
18         result.InnerHtml += "<br />";
19 
20 
21         // 与上面的GroupJoin查询操作符相对应的查询语法
22         var products2 = from c in _ctx.Categories
23                         join p in _ctx.Products on c.CategoryID equals p.CategoryID into g
24                         select new { CategoryName = c.CategoryName, ProductCount = g.Count() };
25 
26 
27         foreach (var g in products2)
28         {
29             result.InnerHtml += g.CategoryName + "" + g.ProductCount + "<br />";
30 
31         }
32         result.InnerHtml += "<br />";
33     }

 

运行结果
Beverages:12
Condiments:12
Confections:13
Dairy Products:10
Grains/Cereals:7
Meat/Poultry:6
Produce:5
Seafood:12

转载于:https://www.cnblogs.com/Linsj/archive/2012/07/12/2588217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值