2011-02-17 72 views
3

在我的項目中,我使用了幾個linq查詢來獲取價格列表。 我需要根據這些價格計算價值。Linq to entity - 從查詢中調用用戶定義的方法

是否有可能直接從LINQ查詢調用用戶方法(誰可以,理想情況下,在實體類),例如,做這樣將是完美的

from foo in Foo 
select new { 
    price = foo.Price, 
    priceclass = foo.GetClassOfPrice() 
} 

將不會有任何來自GetClassOfPrice的數據訪問,只是基於價格的靜態代碼。

感謝提前!

+1

你試過嗎? – Lazarus 2011-02-17 13:39:45

+0

是的,這不起作用 – eka808 2011-02-17 13:41:17

回答

1

不幸的是,這不能完成,因爲你的LINQ查詢被轉換爲SQL。並且您的方法並不爲所謂的提供者所知曉。

3

您只能通過LINQ調用方法到對象,因爲方法調用沒有轉換爲SQL。如果你實現了查詢 - 把它帶入內存 - 首先,然後做它應該工作的選擇。

var foos = context.Foo.ToList() 
         .Select(f => new 
         { 
          price = f.Price, 
          priceClass = f.GetClassOfPrice() 
         }); 

需要注意的是,你應該做的ToList,這樣你只轉你實際需要從數據庫中的數據之前,執行任何條件邏輯(Where)。我使用的是擴展方法,因爲它對我來說更加自然,因爲無論如何您需要使用ToList或類似的方法。我真的不喜歡混合LINQ語法與擴展方法。