【问题标题】:Linq to Entities - NotSupportedException - dynamic type - string.FormatLinq to Entities - NotSupportedException - 动态类型 - string.Format
【发布时间】:2010-11-22 18:23:24
【问题描述】:


我正在从 Linq-to-SQL 切换到 Linq-to-Entities,在转换过程中遇到错误“LINQ to Entities 无法识别方法'System.String Format(System.String, System.Object , System.Object)' 方法,并且该方法不能翻译成存储表达式”。以下代码是罪魁祸首。我知道这与我在下面使用的动态类型生成有关。我如何仍然使用动态类型并使用 L2E?

var query = _db.Persons.Where(p => p.PersonId == PersonId);
if (query.Count() > 0)
{
  var data = query.Join(_db.Users, p => p.UserId, u => u.UserId, (p, u) => new
    {
      Id = p.PersonId,
      Name = string.Format("{0} {1}", p.FirstName, p.LastName),
      Phone = p.Phone,
      Email = u.Email
    }).Single();
  return data;
}

编辑: 好的,在@John Hartsock 向我展示了简单的解决方案之后感觉有点愚蠢......
如果我想做一些更复杂的字符串操作怎么办?

【问题讨论】:

    标签: c# entity-framework linq-to-entities dynamic-typing


    【解决方案1】:

    为什么不这样?

    var query = _db.Persons.Where(p => p.PersonId == PersonId);
    if (query.Count() > 0)
    {
      var data = query.Join(_db.Users, p => p.UserId, u => u.UserId, (p, u) => new
        {
          Id = p.PersonId,
          Name = p.FirstName + " " + p.LastName,
          Phone = p.Phone,
          Email = u.Email
        }).Single();
      return data;
    }
    

    这是一个很好的链接

    http://msdn.microsoft.com/en-us/library/cc716715.aspx

    【讨论】:

    • 天哪 - 多么简单:) ...如果我想做更复杂的字符串操作,你有什么建议?
    • @Ed.S.很高兴我能帮我在上面放一个链接,显示从 LINQ 到实体到 SQL msdn.microsoft.com/en-us/library/cc716715.aspx 的函数转换
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2011-11-02
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多