2012-09-14 45 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 }); 
相关问题