步步为营VS 2008 + .NET 3.5(5) - LINQ查询操作符之Select、Where、OrderBy、OrderByDescending

简介:
[索引页]
[源码下载]


步步为营VS 2008 + .NET 3.5(5) - LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法


作者: webabcd


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


示例
Summary.aspx.cs
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Collections; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif using System.Xml.Linq; 
InBlock.gif 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using DAL; 
InBlock.gif 
InBlock.gif public partial  class LINQ_Summary : System.Web.UI.Page 
InBlock.gif
InBlock.gif        NorthwindDataContext _ctx =  new NorthwindDataContext(); 
InBlock.gif         string[] _ary =  null
InBlock.gif 
InBlock.gif         protected  void Page_Load( object sender, EventArgs e) 
InBlock.gif        { 
InBlock.gif                _ary =  new  string[] {  "asp.net""csharp""xhtml""css""javascript",    
InBlock.gif                         "wcf""wpf""silverlight""linq""wf",    
InBlock.gif                         "sqlserver""asp.net ajax""ssis""ssas""ssrs" }; 
InBlock.gif 
InBlock.gif                 // Select - Select选择;延迟 
InBlock.gif                Summary_Select(); 
InBlock.gif 
InBlock.gif                 // Where - Where查询;延迟 
InBlock.gif                Summary_Where(); 
InBlock.gif 
InBlock.gif                 // OrderBy - 按指定表达式对集合正序排序;延迟 
InBlock.gif                 // OrderByDescending - 按指定表达式对集合倒序排序;延迟 
InBlock.gif                Summary_OrderBy_OrderByDescending(); 
InBlock.gif 
InBlock.gif                 // GroupBy - 分组;延迟 
InBlock.gif                Summary_GroupBy(); 
InBlock.gif 
InBlock.gif                 // Join - Join查询;延迟 
InBlock.gif                Summary_Join(); 
InBlock.gif 
InBlock.gif                 // GroupJoin - 分组Join查询;延迟 
InBlock.gif                Summary_GroupJoin(); 
InBlock.gif        } 
InBlock.gif}
 
Select - Select选择;延迟
/// <summary> 
InBlock.gif         /// Select - Select选择;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Select() 
InBlock.gif        { 
InBlock.gif                 // 使用Select查询操作符 
InBlock.gif                var categories = _ctx.Categories.Select( 
InBlock.gif                        c =>  new { CategoryName =  "类别名称:" + c.CategoryName }); 
InBlock.gif 
InBlock.gif                 foreach (var c  in categories) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += c.CategoryName +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 与上面的Select查询操作符相对应的查询语法 
InBlock.gif                var categories2 = from c  in _ctx.Categories 
InBlock.gif                                                    select  new { CategoryName =  "类别名称:" + c.CategoryName }; 
InBlock.gif 
InBlock.gif                 foreach (var c  in categories2) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += c.CategoryName +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
类别名称:Beverages
类别名称:Condiments
类别名称:Confections
类别名称:Dairy Products
类别名称:Grains/Cereals
类别名称:Meat/Poultry
类别名称:Produce
类别名称:Seafood

Where - Where查询;延迟
/// <summary> 
InBlock.gif         /// Where - Where查询;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Where() 
InBlock.gif        { 
InBlock.gif                 // 使用Where查询操作符 
InBlock.gif                var ary = _ary.Where(a => a.StartsWith( "w") && a.EndsWith( "f")); 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 与上面的Where查询操作符相对应的查询语法 
InBlock.gif                var ary2 = from a  in _ary 
InBlock.gif                                     where a.StartsWith( "w") && a.EndsWith( "f"
InBlock.gif                                     select a; 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary2) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
wcf
wpf
wf

OrderBy - 按指定表达式对集合正序排序;延迟
OrderByDescending - 按指定表达式对集合倒序排序;延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// OrderBy - 按指定表达式对集合正序排序;延迟 
InBlock.gif         /// OrderByDescending - 按指定表达式对集合倒序排序;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_OrderBy_OrderByDescending() 
InBlock.gif        { 
InBlock.gif                 // 使用OrderBy查询操作符 
InBlock.gif                var ary = (from a  in _ary 
InBlock.gif                                     select a).OrderBy(a => a.Length);  // OrderByDescending与OrderBy用法相同 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 与上面的OrderBy查询操作符相对应的查询语法 
InBlock.gif                var ary2 = from a  in _ary 
InBlock.gif                                     orderby a.Length ascending  // orderby xxx descending与orderby xxx ascending用法相同 
InBlock.gif                                     select a; 
InBlock.gif 
InBlock.gif                 foreach ( string s  in ary2) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += s +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
wf
css
wcf
wpf
linq
ssis
ssas
ssrs
xhtml
csharp
asp.net
sqlserver
javascript
silverlight
asp.net ajax

GroupBy - 分组;延迟
/// <summary> 
InBlock.gif         /// GroupBy - 分组;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_GroupBy() 
InBlock.gif        { 
InBlock.gif                 // 使用GroupBy查询操作符 
InBlock.gif                var list = (from a  in _ary 
InBlock.gif                                        select a).GroupBy(a => a.Length).Select( 
InBlock.gif                                                g =>  new { Group = g.Key, Member = g }); 
InBlock.gif 
InBlock.gif                 foreach (var g  in list) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += g.Group +  "个字符:<br />"
InBlock.gif 
InBlock.gif                         foreach ( string s  in g.Member) 
InBlock.gif                        { 
InBlock.gif                                result.InnerHtml +=  "--" + s +  "<br />"
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 与上面的GroupBy查询操作符相对应的查询语法 
InBlock.gif                var list2 = from a  in _ary 
InBlock.gif                                        group a by a.Length into g 
InBlock.gif                                        select  new { Group = g.Key, Member = g }; 
InBlock.gif 
InBlock.gif                 foreach (var g  in list2) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += g.Group +  "个字符:<br />"
InBlock.gif 
InBlock.gif                         foreach ( string s  in g.Member) 
InBlock.gif                        { 
InBlock.gif                                result.InnerHtml +=  "--" + s +  "<br />"
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
 
运行结果
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查询;延迟
/// <summary> 
InBlock.gif         /// Join - Join查询;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_Join() 
InBlock.gif        { 
InBlock.gif                 // 使用Join查询操作符 
InBlock.gif                var products = _ctx.Products.Join( 
InBlock.gif                        _ctx.Categories,    
InBlock.gif                        p => p.CategoryID,    
InBlock.gif                        c => c.CategoryID,    
InBlock.gif                        (p, c) =>  new { c.CategoryName, p.ProductName }).Take(5); 
InBlock.gif 
InBlock.gif                 foreach (var p  in products) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += p.CategoryName +  " - " + p.ProductName +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 与上面的Join查询操作符相对应的查询语法 
InBlock.gif                var products2 = (from p  in _ctx.Products 
InBlock.gif                                                 join c  in _ctx.Categories 
InBlock.gif                                                 on p.CategoryID equals c.CategoryID 
InBlock.gif                                                 select  new { c.CategoryName, p.ProductName }).Take(5); 
InBlock.gif 
InBlock.gif                 foreach (var p  in products2) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += p.CategoryName +  " - " + p.ProductName +  "<br />"
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果
Beverages - Chai
Beverages - Chang
Condiments - Aniseed Syrup
Condiments - Chef Anton's Cajun Seasoning
Condiments - Chef Anton's Gumbo Mix

GroupJoin - 分组Join查询;延迟
InBlock.gif  /// <summary> 
InBlock.gif         /// GroupJoin - 分组Join查询;延迟 
InBlock.gif         /// </summary> 
InBlock.gif         void Summary_GroupJoin() 
InBlock.gif        { 
InBlock.gif                 // 使用GroupJoin查询操作符 
InBlock.gif                var products = _ctx.Categories.GroupJoin( 
InBlock.gif                        _ctx.Products,    
InBlock.gif                        c => c.CategoryID,    
InBlock.gif                        p => p.CategoryID,    
InBlock.gif                        (p, g) =>  new { p.CategoryName, ProductCount = g.Count() }); 
InBlock.gif 
InBlock.gif                 foreach (var g  in products) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += g.CategoryName +  ":" + g.ProductCount +  "<br />"
InBlock.gif 
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 与上面的GroupJoin查询操作符相对应的查询语法 
InBlock.gif                var products2 = from c  in _ctx.Categories 
InBlock.gif                                                join p  in _ctx.Products on c.CategoryID equals p.CategoryID into g 
InBlock.gif                                                select  new { CategoryName = c.CategoryName, ProductCount = g.Count() }; 
InBlock.gif 
InBlock.gif 
InBlock.gif                 foreach (var g  in products2) 
InBlock.gif                { 
InBlock.gif                        result.InnerHtml += g.CategoryName +  ":" + g.ProductCount +  "<br />"
InBlock.gif 
InBlock.gif                } 
InBlock.gif                result.InnerHtml +=  "<br />"
InBlock.gif        }
 
运行结果





     本文转自webabcd 51CTO博客,原文链接: http://blog.51cto.com/webabcd/344995 ,如需转载请自行联系原作者
相关文章
|
29天前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
15 1
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
62 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
4月前
|
SQL 开发框架 .NET
|
4月前
|
XML SQL 开发框架
|
29天前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
1月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
149 2
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
开发框架 .NET
|
4月前
|
开发框架 .NET C#
|
4月前
|
存储 数据库
VB.NET三层之用户查询窗体
VB.NET三层之用户查询窗体
57 0

相关课程

更多