风影ASP.NET基础教学 15 LINQ TO SQL2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace WebApplication1
{
    public partial class Linq2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            #region  Join
            /*
             
             * Join操作
 
                适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等。对各个表之间的关系,就用这些实现对多个表的操作。
 
                说明:在Join操作中,分别为Join(Join查询), SelectMany(Select一对多选择)和GroupJoin(分组Join查询)。
                该扩展方法对两个序列中键匹配的元素进行inner join操作
            
             * SelectMany
 
                    说明:我们在写查询语句时,如果被翻译成SelectMany需要满足2个条件。1:查询语句中没有join和into,2:必须出现EntitySet。在我们表关系中有一对一关系,一对多关系,多对多关系等,下面分别介绍一下。 
                1.一对多关系(1 to Many):
                var q =
                    from c in db.Customers
                    from o in c.Orders
                    where c.City == "London"
                    select o; 
                语句描述:Customers与Orders是一对多关系。即Orders在Customers类中以EntitySet形式出现。所以第二个from是从c.Orders而不是db.Orders里进行筛选。这个例子在From子句中使用外键导航选择伦敦客户的所有订单。
                var q =
                    from p in db.Products
                    where p.Supplier.Country == "USA" && p.UnitsInStock == 0
                    select p; 
                    语句描述:这一句使用了p.Supplier.Country条件,间接关联了Supplier表。这个例子在Where子句中使用外键导航筛选其供应商在美国且缺货的产品。 
            */
            #endregion
 
            #region OrderBy
            /*
             
             * Order By操作
 
                适用场景:对查询出的语句进行排序,比如按时间排序等等。
 
                说明:按指定表达式对集合排序;延迟,:按指定表达式对集合排序;延迟,默认是升序,加上  descending表示降序,对应的扩展方法是OrderBy和OrderByDescending
 
            1.简单形式
 
                这个例子使用 orderby 按雇用日期对雇员进行排序:
                 var q =
                    from e in db.Employees
                    orderby e.HireDate
                    select e; 
                说明:默认为升序
 
            2.带条件形式
 
                注意:Where和Order By的顺序并不重要。而在T-SQL中,Where和Order By有严格的位置限制。
                var q =
                    from o in db.Orders
                    where o.ShipCity == "London"
                    orderby o.Freight
                    select o; 
             * 
             select * from Orders where ShipCity='london' order by freight
             * 
                语句描述:使用where和orderby按运费进行排序。
 
            3.降序排序
                var q = 
                    from p in db.Products
                    orderby p.UnitPrice descending
                     select p; 
            4.ThenBy
 
            语句描述:使用复合的 orderby 对客户进行排序,进行排序:
                var q =
                     from c in db.Customers
                    orderby c.City, c.ContactName
                    select c; 
            说明:按多个表达式进行排序,例如先按City排序,当City相同时,按ContactName排序。这一句用               
             Lambda表达式像这样写:
                var q = 
                    db.Customers
                    .OrderBy(c => c.City)
                    .ThenBy(c => c.ContactName).ToList(); 
            在T-SQL中没有ThenBy语句,其依然翻译为OrderBy,所以也可以用下面语句来表达:
                var q = 
                    db.Customers
                    .OrderBy(c => c.ContactName)
                    .OrderBy(c => c.City).ToList(); 
            所要注意的是,多个OrderBy操作时,级连方式是按逆序。 对于降序的,用相应的降序操作符替换即可。
            var q = 
                db.Customers
                .OrderByDescending(c => c.City)
                .ThenByDescending(c => c.ContactName).ToList(); 
           
             */
            #endregion
 
 
        }
    }
}

posted on 2012-09-06 12:02  任生风影  阅读(384)  评论(0编辑  收藏  举报

导航