05 第五讲 LINQ to EntitiesWord文档格式.docx
- 文档编号:19830997
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:24
- 大小:20.77KB
05 第五讲 LINQ to EntitiesWord文档格式.docx
《05 第五讲 LINQ to EntitiesWord文档格式.docx》由会员分享,可在线阅读,更多相关《05 第五讲 LINQ to EntitiesWord文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
varonlineOrders=
fromorderincontext.SalesOrderHeader
whereorder.OnlineOrderFlag==true&
&
order.TotalDue>
orderCost
selectorder;
//Printorderinformation.
foreach(varonlineOrderinonlineOrders)
Console.WriteLine("
OrderID:
{0}Orderdate:
"
+"
{1:
d}Ordernumber:
{2}"
onlineOrder.SalesOrderID,
onlineOrder.OrderDate,
onlineOrder.SalesOrderNumber);
}
catch(EntitySqlExceptionex)
Console.WriteLine(ex.ToString());
}
EntitySQL:
decimalorderCost=2500;
//SpecifytheEntitySQLquerythatreturnsonlyonlineorders
stringqueryString=@"
SELECTVALUEoFROMSalesOrderHeaderASo
WHEREo.OnlineOrderFlag=TRUEANDo.TotalDue>
@ordercost"
;
//DefineanObjectQueryandpassthemaxOrderCostparameter.
ObjectQuery<
SalesOrderHeader>
onlineOrders=
newObjectQuery<
(queryString,context);
onlineOrders.Parameters.Add(
newObjectParameter("
ordercost"
orderCost));
查询生成器方法:
//DefineanObjectQuerythatreturnsonlyonlineorders
context.SalesOrderHeader
.Where("
it.OnlineOrderFlag=TRUEANDit.TotalDue>
varitems=(fromitemincontext.SalesOrderDetail
whereitem.SalesOrderHeader==onlineOrder
selectitem).Take(3);
本讲我们重点介绍lINQtoEntities查询。
5.1投影
1.以下示例使用Select方法以返回Product表中的所有行并显示产品名称。
using(AdventureWorksEntitiesAWEntities=newAdventureWorksEntities())
Product>
products=AWEntities.Product;
IQueryable<
productsQuery=fromproductinproducts
selectproduct;
ProductNames:
"
);
foreach(varprodinproductsQuery)
Console.WriteLine(prod.Name);
2.以下示例使用Select以只返回一系列产品名称。
string>
productNames=
frompinproducts
selectp.Name;
foreach(StringproductNameinproductNames)
Console.WriteLine(productName);
3.以下示例使用Select方法以将Product.Name和Product.ProductID属性投影到一系列匿名类型。
varquery=
fromproductinproducts
selectnew
ProductId=product.ProductID,
ProductName=product.Name
};
ProductInfo:
foreach(varproductInfoinquery)
ProductId:
{0}Productname:
{1}"
productInfo.ProductId,productInfo.ProductName);
4.以下示例使用From…From…(与SelectMany方法等效)以选择TotalDue低于500.00的所有订单。
Contact>
contacts=AWEntities.Contact;
orders=AWEntities.SalesOrderHeader;
//注意三者是等效的
//利用筛选
varquery=
fromcontactincontacts
fromorderinorders
wherecontact.ContactID==order.Contact.ContactID
&
order.TotalDue<
200000.00M
ContactID=contact.ContactID,
LastName=contact.LastName,
FirstName=contact.FirstName,
OrderID=order.SalesOrderID,
Total=order.TotalDue
//利用导航属性
varquery1=
fromorderincontact.SalesOrderHeader
whereorder.TotalDue>
//使用关联
varquery2=
joinorinordersoncontact.ContactIDequalsor.Contact.ContactID
whereor.TotalDue>
OrderID=or.SalesOrderID,
Total=or.TotalDue
foreach(varsmallOrderinquery)
ContactID:
{0}Name:
{1},{2}OrderID:
{3}TotalDue:
${4}"
smallOrder.ContactID,smallOrder.LastName,smallOrder.FirstName,
smallOrder.OrderID,smallOrder.Total);
5.以下示例使用From…From…(与SelectMany方法等效)以选择订单总计高于10000.00的所有订单并使用From赋值以避免两次请求总计。
lettotal=order.TotalDue
total>
=10000.0M
total
foreach(varorderinquery)
{0}Lastname:
{1}OrderID:
{2}Total:
{3}"
order.ContactID,order.LastName,order.OrderID,order.total);
5.2限制
1.以下示例返回订单数量大于2且小于6的订单。
SalesOrderDetail>
orders=AWEntities.SalesOrderDetail;
whereorder.OrderQty>
2&
order.OrderQty<
6
SalesOrderID=order.SalesOrderID,
OrderQty=order.OrderQty
{0}Orderquantity:
{1}"
order.SalesOrderID,order.OrderQty);
2.以下示例使用Where方法以查找在2003年12月1日之后生成的订单,然后使用order.SalesOrderDetail导航属性以获取每个订单的详细信息。
query=
whereorder.OrderDate>
=newDateTime(2003,12,1)
OrdersthatweremadeafterDecember1,2003:
foreach(SalesOrderHeaderorderinquery)
OrderID{0}Orderdate:
{1:
d}"
order.SalesOrderID,order.OrderDate);
foreach(SalesOrderDetailorderDetailinorder.SalesOrderDetail)
{
ProductID:
{0}UnitPrice{1}"
orderDetail.ProductID,orderDetail.UnitPrice);
5.3排序
1.以下示例使用OrderBy以返回按姓氏排序的联系人列表。
sortedNames=
fromnincontacts
orderbyn.LastName
selectn;
Thesortedlistoflastnames:
foreach(ContactninsortedNames)
Console.WriteLine(n.LastName);
2.以下示例使用orderby…descending,以按照从高到低的顺序对价目表排序。
Decimal>
sortedPrices=
orderbyp.ListPricedescending
selectp.ListPrice;
Thelistpricefromhighesttolowest:
foreach(DecimalpriceinsortedPrices)
Console.WriteLine(price);
3.以下示例使用OrderBy和ThenBy以返回先按姓氏后按名字排序的联系人列表。
sortedContacts=
orderbycontact.LastName,contact.FirstName
selectcontact;
Thelistofcontactssortedbylastnamethenbyfirstname:
foreach(ContactsortedContactinsortedContacts)
Console.WriteLine(sortedContact.LastName+"
"
+sortedContact.FirstName);
5.4聚合运算符
1.以下示例使用Average方法以查找每种样式的产品的平均标价。
varquery=fromproductinproducts
groupproductbyproduct.Styleintog
Style=g.Key,
AverageListPrice=
g.Average(product=>
product.ListPrice)
foreach(varproductinquery)
Productstyle:
{0}Averagelistprice:
product.Style,product.AverageListPrice);
2.以下示例使用Average以获取每个联系人ID的平均应付款总计。
orders=AWEntities.SalesOr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 05 第五讲 LINQ to Entities 第五
![提示](https://static.bdocx.com/images/bang_tan.gif)