【问题标题】:can i use custom lambda method in entity framework?我可以在实体框架中使用自定义 lambda 方法吗?
【发布时间】:2012-09-14 11:53:05
【问题描述】:

我有一些方法,例如:

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())

【问题讨论】:

    标签: entity-framework c#-4.0 lambda


    【解决方案1】:

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

    您可以使用没有该功能的查询从表中获取数据,然后对结果集进行格式化。

    【讨论】:

    • 在我使用 LINQ 的实体之前,在 LINQ 中我使用了类似的查询并且它们运行良好。但我只收到错误
    • 是的,我现在这样做,我在查询之前和之后转换它们,这不明智。但感谢您的帮助。
    • lamda 表达式没有转换成 SQL,这就是它失败的原因。
    【解决方案2】:

    我在使用 .AsEnumerable() 方法时发现了它,例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 2013-07-29
      • 2019-12-18
      • 1970-01-01
      相关资源
      最近更新 更多