2011-07-07 69 views
2

我正在使用BLToolkit庫將我的SQL過程轉換爲Linq。使用BLToolkit和Linq的標量函數

現在我陷入了一個小問題,所以如果有人知道這是可能的,我將非常感謝幫助。

反正我的SQL查詢看起來是這樣的(注:這不是我的實際表名,我只是翻譯它們,以便你們能夠理解這是怎麼回事)

select 
    P.ProductsID, 
    P.Name, 
    P.Description, 
    dbo.GetTax(P.TaxID, getdate()) -- this is what I need help with 
from 
    Products P 

沒什麼特別的在這裏除了我需要爲當天的每件產品徵稅。

現在我需要將其轉換爲Linq,但我不知道這甚至是可能的。我試過這樣的東西

from p in Products 
select new 
{ 
    p.ProductsID, 
    p.Name, 
    p.Description, 
    GetTax(p.TaxID, DateTime.Today) //this is what I need help with 
} 

它不起作用。 GetWork函數是essentialy只是返回稅的另一個linq查詢。我不知道如何使用BLToolkit庫調用scallar函數。

所以問題是這樣的。是否可以從Linq選定語句中調用標量函數?

回答

4

在某處定義以下函數。

[SqlFunction(ServerSideOnly=true)] 
public static double GetTax(int id, DateTime dt) 
{ 
    throw new NotImplementedException(); 
} 

它會告訴BLToolkit將GetTax轉換爲SQL。

+0

謝謝你的答案,但我需要寫在這個方法體內返回值從服務器功能? –

+0

沒有。該示例已完成。 SqlFunction屬性告訴BLToolkit不要調用GetTax,而是將其轉換爲SQL。 –

+0

嘿,誰會認爲這很簡單,比你:) PS如果你沒有看到,我幾天前在GitHub上發佈了一個問題。 –