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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linq表值函數(shù)詳細(xì)分析

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq表值函數(shù),包括介紹修改一下Discontinued屬性為可空的bool類型等方面。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、無棣ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的無棣網(wǎng)站制作公司

使用用戶定義的Linq表值函數(shù)

Linq表值函數(shù)返回單個(gè)行集(與存儲(chǔ)過程不同,存儲(chǔ)過程可返回多個(gè)結(jié)果形狀)。由于Linq表值函數(shù)的返回類型為 Table,因此在 SQL 中可以使用表的任何地方均可以使用Linq表值函數(shù)。此外,您還可以完全像處理表那樣來處理Linq表值函數(shù)。

下面的 SQL 用戶定義函數(shù)顯式聲明其返回一個(gè) TABLE。因此,隱式定義了所返回的行集結(jié)構(gòu)。

 
 
 
  1. ALTER FUNCTION [dbo].[ProductsUnderThisUnitPrice]  
  2. (@price Money  
  3. )  
  4. RETURNS TABLE  
  5. AS  
  6. RETURN  
  7. SELECT *  
  8. FROM Products as P  
  9. Where p.UnitPrice < @price 

拖到設(shè)計(jì)器中,LINQ to SQL 按如下方式映射此函數(shù):

 
 
 
  1. IsComposable=true)]  
  2. public IQueryable   
  3. ProductsUnderThisUnitPrice([Parameter(DbType="Money")]  
  4. System.Nullable price)  
  5. {  
  6. return this.CreateMethodCallQuery  
  7. (this,  
  8. ((MethodInfo)(MethodInfo.GetCurrentMethod())), price);  

這時(shí)我們小小的修改一下Discontinued屬性為可空的bool類型。

 
 
 
  1. private System.Nullable _Discontinued;  
  2. public System.Nullable Discontinued  
  3. {  

我們可以這樣調(diào)用使用了:

 
 
 
  1. var q = from p in db.ProductsUnderThisUnitPrice(10.25M)  
  2. where !(p.Discontinued ?? false)  
  3. select p; 

其生成SQL語句如下:

 
 
 
  1. SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID],   
  2. [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice],   
  3. [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel],  
  4. [t0].[Discontinued]  
  5. FROM [dbo].[ProductsUnderThisUnitPrice](@p0) AS [t0]  
  6. WHERE NOT ((COALESCE([t0].[Discontinued],@p1)) = 1)  
  7. -- @p0: Input Money (Size = 0; Prec = 19; Scale = 4) [10.25]  
  8. -- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [0] 

以聯(lián)接方式使用用戶定義的Linq表值函數(shù)

我們利用上面的ProductsUnderThisUnitPrice用戶定義函數(shù),在 LINQ to SQL 中,調(diào)用如下:

 
 
 
  1. var q =  
  2. from c in db.Categories  
  3. join p in db.ProductsUnderThisUnitPrice(8.50M) on  
  4. c.CategoryID equals p.CategoryID into prods  
  5. from p in prods  
  6. select new  
  7. {  
  8. c.CategoryID,  
  9. c.CategoryName,  
  10. p.ProductName,  
  11. p.UnitPrice  
  12. }; 

其生成的 SQL 代碼說明對(duì)此函數(shù)返回的表執(zhí)行聯(lián)接。

 
 
 
  1. SELECT [t0].[CategoryID], [t0].[CategoryName],   
  2. [t1].[ProductName], [t1].[UnitPrice]  
  3. FROM [dbo].[Categories] AS [t0]  
  4. CROSS JOIN [dbo].[ProductsUnderThisUnitPrice](@p0) AS [t1]  
  5. WHERE ([t0].[CategoryID]) = [t1].[CategoryID]  
  6. -- @p0: Input Money (Size = 0; Prec = 19; Scale = 4) [8.50] 

【編輯推薦】

  1. Linq結(jié)果集形狀概述
  2. Linq存儲(chǔ)過程返回詳解
  3. Linq調(diào)用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡單描述
  5. Linq對(duì)象引用簡單介紹

分享題目:Linq表值函數(shù)詳細(xì)分析
本文地址:http://m.5511xx.com/article/cdgogoe.html