風影ASP.NET基礎教育14 LINQ TO SQL基礎
30224 ワード
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 WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
NorthwindEntities North = new NorthwindEntities();
#region
//Linq from --- where--- select
//T-sql select --- from --- where
//var data = from p in North.Products
// where p.ProductID < 20
// select p;
// select * from Products where Productid<20
//var data =
// from c in North.Categories
// where c.CategoryID == 3
// select c;
// 1994 1 1
// from e in db.Employees
// where e.HireDate >= new DateTime(1994, 1, 1)
// select e;
//var data = from p in North.Products
// where p.ProductID < 20
// select new {p.ProductName,p.ProductID,p.CategoryID};
//select ProductName,ProductID,CategoryID from products where productid<20
//var data = from p in North.Products
// where p.ProductID < 20
// select new { p.ProductName, p.ProductID, p.CategoryID };
//this.GridView1.DataSource = data;
//this.GridView1.DataBind();
#endregion
#region
// :
// var q =
// from p in db.Products
// where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
// select p;
// UnitPrice 10 :
// var q =
// from p in db.Products
// where p.UnitPrice > 10m || p.Discontinued
// select p;
// where UnitPrice 10 。
//var q =
// db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);
#endregion
#region First()
// , SQL TOP (1)。
// : 。
// Shipper shipper = db.Shippers.First();
// : CustomerID “BONAP”
// Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");
// : 10.00 :
// Order ord = db.Orders.First(o => o.Freight > 10.00M);
#endregion
#region Select/Distinct
// :o(∩_∩)o… 。
// : SQL select , select ; 。
//Select/Distinct 9 , 、 、 、 、 、 、 、 、Distinct 。
//1. :
// 。
// var q =
// from c in db.Customers
// select c.ContactName;
// : , , , , (deferred loading)。 , 。 ToList() ToArray() , 。 (deferred loading) SQL , 。
//2. :
// : C#3.0 。 。 : property 。 ,var d = new { Name = "s" }; property Name , , 。 var d = new {"s"}; 。 , property 。 string c = "d";var d = new { c}; 。 c property。
// :new{c.ContactName,c.Phone};ContactName Phone property。 , , , ContactName Phone, 。 property 。
// var q =
// from c in db.Customers
// select new {c.ContactName, c.Phone};
// : SELECT
// var q =
// from e in db.Employees
// select new
// {
// Name = e.FirstName + " " + e.LastName,
// Phone = e.HomePhone
// };
// : SELECT , FirstName LastName “Name”, HomePhone Phone。
// var q =
// from p in db.Products
// select new
// {
// p.ProductID,
// HalfPrice = p.UnitPrice / 2
// };
// : SELECT ID HalfPrice( 2 ) 。
//3. :
// : SQL :case when condition then else。
// var q =
// from p in db.Products
// select new
// {
// p.ProductName,
// Availability =
// p.UnitsInStock - p.UnitsOnOrder < 0 ?
// "Out Of Stock" : "In Stock"
// };
// : SELECT 。
//4. :
// : 。
// var q =
// from e in db.Employees
// select new Name
// {
// FirstName = e.FirstName,
// LastName = e.LastName
// };
// : SELECT 。
//5. :
// : where , 。
// var q =
// from c in db.Customers
// where c.City == "London"
// select c.ContactName;
// : SELECT WHERE 。
//6.shaped ( ):
// : select , , 。
// var q =
// from c in db.Customers
// select new {
// c.CustomerID,
// CompanyInfo = new {c.CompanyName, c.City, c.Country},
// ContactInfo = new {c.ContactName, c.ContactTitle}
// };
// : SELECT 。 ID ( , , ) ( )。
//7. :
// : DiscountedProducts , 。 。
// var q =
// from o in db.Orders
// select new {
// o.OrderID,
// DiscountedProducts =
// from od in o.OrderDetails
// where od.Discount > 0.0
// select od,
// FreeShippingDiscount = o.Freight
// };
// : OrderID 、 。
//8. (LocalMethodCall):
// PhoneNumberConverter 。
// var q = from c in db.Customers
// where c.Country == "UK" || c.Country == "USA"
// select new
// {
// c.CustomerID,
// c.CompanyName,
// Phone = c.Phone,
// InternationalPhone =
// PhoneNumberConverter(c.Country, c.Phone)
// };
// PhoneNumberConverter :
// public string PhoneNumberConverter(string Country, string Phone)
// {
// Phone = Phone.Replace(" ", "").Replace(")", ")-");
// switch (Country)
// {
// case "USA":
// return "1-" + Phone;
// case "UK":
// return "44-" + Phone;
// default:
// return Phone;
// }
//}
// XDocument
// XDocument doc = new XDocument(
// new XElement("Customers", from c in db.Customers
// where c.Country == "UK" || c.Country == "USA"
// select (new XElement("Customer",
// new XAttribute("CustomerID", c.CustomerID),
// new XAttribute("CompanyName", c.CompanyName),
// new XAttribute("InterationalPhone",
// PhoneNumberConverter(c.Country, c.Phone))
// ))));
//9.Distinct :
// : 。 。 SQL :SELECT DISTINCT [City] FROM [Customers]
// var q = (
// from c in db.Customers
// select c.City )
// .Distinct();
// : 。
#endregion
#region Count/Sum/Min/Max/Avg
/*
: , , , , , 。
* Count
: , INT ; 。 SQL :SELECT COUNT(*) FROM
1. :
:
var q = db.Customers.Count();
2. :(Lambda)
:
var q = db.Products.Count(p => !p.Discontinued);
* LongCount
: , LONG ; 。 LongCount , long , 。 SQL :SELECT COUNT_BIG(*) FROM
var q = db.Customers.LongCount();
* Sum
: , INT ; 。 SQL :SELECT SUM(…) FROM
1. :
:
var q = db.Orders.Select(o => o.Freight).Sum();
2. :
:
var q = db.Products.Sum(p => p.UnitsOnOrder);
* Min
: ; 。 SQL :SELECT MIN(…) FROM
1. :
:
var q = db.Products.Select(p => p.UnitPrice).Min();
2. :
:
var q = db.Orders.Min(o => o.Freight);
3. :
:
var categories =
from p in db.Products
group p by p.UnitPrice into g
select new {
CategoryID = g.Key,
CheapestProducts =
from p2 in g
where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
select p2
};
// select CategoryID,min(price) from Products group by CategoryID
* Max
: ; 。 SQL :SELECT MAX(…) FROM
1. :
:
var q = db.Employees.Select(e => e.HireDate).Max();
2. :
:
var q = db.Products.Max(p => p.UnitsInStock);
3. :
:
var categories =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
MostExpensiveProducts =
from p2 in g
where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
select p2
};
* Average
: 。 , double; 。 SQL :SELECT AVG(…) FROM
1. :
:
var q = db.Orders.Select(o => o.Freight).Average();
2. :
:
var q = db.Products.Average(p => p.UnitPrice);
3. :
:
var categories =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
ExpensiveProducts =
from p2 in g
where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)
select p2
};
: ; 。 : , 。 , 。
LINQ to SQL
Where ;
Select ;
Distinct ;
Count , INT ;
LongCount , LONG ;
Sum , INT ;
Min ;
Max ;
Average 。 , double;
Aggregate ;
*/
#endregion
}
}
}
<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->