05 第五讲 LINQ to EntitiesWord文档格式.docx

上传人:b****5 文档编号:19830997 上传时间:2023-01-10 格式:DOCX 页数:24 大小:20.77KB
下载 相关 举报
05 第五讲 LINQ to EntitiesWord文档格式.docx_第1页
第1页 / 共24页
05 第五讲 LINQ to EntitiesWord文档格式.docx_第2页
第2页 / 共24页
05 第五讲 LINQ to EntitiesWord文档格式.docx_第3页
第3页 / 共24页
05 第五讲 LINQ to EntitiesWord文档格式.docx_第4页
第4页 / 共24页
05 第五讲 LINQ to EntitiesWord文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

05 第五讲 LINQ to EntitiesWord文档格式.docx

《05 第五讲 LINQ to EntitiesWord文档格式.docx》由会员分享,可在线阅读,更多相关《05 第五讲 LINQ to EntitiesWord文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

05 第五讲 LINQ to EntitiesWord文档格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1