我可以在实体框架中使用自定义lambda方法吗?

时间:2012-09-14 11:53:06

标签: entity-framework c#-4.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 to Entities无法识别方法'Int32 ToInt32(System.String)'方法,并且此方法无法转换为商店表达式。

使用此代码

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

2 个答案:

答案 0 :(得分:1)

看起来您正在查询数据库。您当前的查询将被转换为SQL查询,因为SQL无法识别您的函数,这就是您收到错误的原因。

您可以使用不带该函数的查询从表中获取数据,然后在结果集上进行格式化。

答案 1 :(得分: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 });