日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Linq結(jié)果集形狀概述

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq結(jié)果集形狀,包括介紹 ResultTypeAttribute 屬性適用于返回多個(gè)結(jié)果類(lèi)型的存儲(chǔ)過(guò)程等方面。

成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的民權(quán)網(wǎng)站建設(shè)公司,民權(quán)接單;提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行民權(quán)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

當(dāng)存儲(chǔ)過(guò)程可以返回多個(gè)Linq結(jié)果集形狀時(shí),返回類(lèi)型無(wú)法強(qiáng)類(lèi)型化為單個(gè)投影形狀。盡管 LINQ to SQL 可以生成所有可能的投影類(lèi)型,但它無(wú)法獲知將以何種順序返回它們。 ResultTypeAttribute 屬性適用于返回多個(gè)結(jié)果類(lèi)型的存儲(chǔ)過(guò)程,用以指定該過(guò)程可以返回的類(lèi)型的集合。

在下面的 SQL 代碼示例中,Linq結(jié)果集形狀取決于輸入(param1 = 1或param1 = 2)。我們不知道先返回哪個(gè)投影。

 
 
 
  1. ALTER PROCEDURE [dbo].[SingleRowset_MultiShape]  
  2. -- Add the parameters for the stored procedure here  
  3. (@param1 int )  
  4. AS  
  5. BEGIN  
  6. -- SET NOCOUNT ON added to prevent extra result sets from  
  7. -- interfering with SELECT statements.  
  8. SET NOCOUNT ON;  
  9. if(@param1 = 1)  
  10. SELECT * from Customers as c where c.Region = 'WA' 
  11. else if (@param1 = 2)  
  12. SELECT CustomerID, ContactName, CompanyName from   
  13. Customers as c where c.Region = 'WA' 
  14. END 

拖到O/R設(shè)計(jì)器內(nèi),它自動(dòng)生成了以下代碼段:

 
 
 
  1. [Function(Name="dbo.[Whole Or Partial Customers Set]")]  
  2. public ISingleResult   
  3. Whole_Or_Partial_Customers_Set([Parameter(DbType="Int")]   
  4. System.Nullable param1)  
  5. {  
  6. IExecuteResult result = this.ExecuteMethodCall(this,   
  7. ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1);  
  8. return ((ISingleResult)  
  9. (result.ReturnValue));  

但是,VS2008會(huì)把多結(jié)果集存儲(chǔ)過(guò)程識(shí)別為單結(jié)果集的存儲(chǔ)過(guò)程,默認(rèn)生成的代碼我們要手動(dòng)修改一下,要求返回多個(gè)結(jié)果集,像這樣:

 
 
 
  1. [Function(Name="dbo.[Whole Or Partial Customers Set]")]  
  2. [ResultType(typeof(WholeCustomersSetResult))]  
  3. [ResultType(typeof(PartialCustomersSetResult))]  
  4. public IMultipleResults Whole_Or_Partial_Customers_Set([Parameter  
  5. (DbType="Int")] System.Nullable param1)  
  6. {  
  7. IExecuteResult result = this.ExecuteMethodCall(this,   
  8. ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1);  
  9. return ((IMultipleResults)(result.ReturnValue));  

我們分別定義了兩個(gè)分部類(lèi),用于指定返回的類(lèi)型。這樣就可以使用了,下面代碼直接調(diào)用,分別返回各自的結(jié)果集合。

 
 
 
  1. //返回全部Customer結(jié)果集  
  2. IMultipleResults result = db.Whole_Or_Partial_Customers_Set(1);  
  3. IEnumerable shape1 =  
  4. result.GetResult();  
  5. foreach (WholeCustomersSetResult compName in shape1)  
  6. {  
  7. Console.WriteLine(compName.CompanyName);  
  8. }  
  9. //返回部分Customer結(jié)果集  
  10. result = db.Whole_Or_Partial_Customers_Set(2);  
  11. IEnumerable shape2 =  
  12. result.GetResult();  
  13. foreach (PartialCustomersSetResult con in shape2)  
  14. {  
  15. Console.WriteLine(con.ContactName);  

語(yǔ)句描述:這個(gè)實(shí)例使用存儲(chǔ)過(guò)程返回“WA”地區(qū)中的一組客戶(hù)。返回的Linq結(jié)果集形狀取決于傳入的參數(shù)。如果參數(shù)等于 1,則返回所有客戶(hù)屬性。如果參數(shù)等于2,則返回ContactName屬性。

【編輯推薦】

  1. LINQ to DataSet查詢(xún)?cè)斀?/li>
  2. Linq實(shí)現(xiàn)XML轉(zhuǎn)換淺談
  3. Linq to SQL強(qiáng)類(lèi)型DataContext
  4. Linq SelectMany學(xué)習(xí)經(jīng)驗(yàn)
  5. 使用LINQ進(jìn)行數(shù)據(jù)轉(zhuǎn)換剖析

本文標(biāo)題:Linq結(jié)果集形狀概述
鏈接URL:http://m.5511xx.com/article/dhpoedj.html