2012-09-14 86 views
0

我有這樣一些方法:我可以在實體框架中使用自定義lambda方法嗎?

public static string ToOtherFormat (this string inp) 
{ 
    // some code to change inp 
    return inp; 
} 

,並在我的選擇,我想有這樣的代碼:

var DetailMembers = db.TB_Members 
         .Where(x=> x.FName == obj.ToOtherFormat()) 
         .Select(x=> new { name = (x.FName.ToOtherFormat() + " " + x.LName) , x.ActCode }); 

我嘗試,只是有錯誤。可能嗎?
謝謝!
我收到此錯誤在簡單的轉換爲整數

LINQ實體無法識別方法「的Int32 ToInt32(System.String)」方法,和這種方法不能被翻譯成表達商店。

與此代碼

.Where(x => x.MemberID == Convert.ToInt32(Hmemid.Hash_two_Decrypt()) 

回答

1

看起來要查詢對數據庫。您當前的查詢將被轉換爲SQL查詢,並且由於SQL無法識別您的函數,因此您會遇到錯誤。

您可以使用不帶該函數的查詢從表中獲取數據,然後再對結果集進行格式設置。

+0

實體之前,我使用LINQ,在LINQ我使用類似的查詢和他們工作得很好。但我收到只是錯誤 –

+0

是的,我現在這樣做,我轉換他們前後查詢,它不明智。但感謝你的幫助。 –

+0

lamda表達式不會轉換爲SQL,這就是它失敗的原因。 –

0

我發現它使用.AsEnumerable()方法,如:

var DetailMembers = db.TB_Members.AsEnumerable() 
         .Where(x=> x.FName == obj.ToOtherFormat()) 
         .Select(x=> new { name = (x.FName.ToOtherFormat() + " " + x.LName) , x.ActCode }); 
相關問題