代码之家  ›  专栏  ›  技术社区  ›  Ed Sinek

Linq to Entities-NotSupportedException-动态类型-String.Format

  •  3
  • Ed Sinek  · 技术社区  · 14 年前


    我正在从LINQ切换到SQL,然后切换到LINQ实体,在转换过程中遇到错误“LINQ to Entities does not recognized the method‘system.string format(system.string,system.object,system.object)’method,而此方法无法转换为存储表达式”。以下代码是罪魁祸首。我知道这与我下面使用的动态类型生成有关。如何仍然使用动态类型和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向我展示了简单的解决方案之后,感觉有点傻…
    如果我想做一些更复杂的字符串操作呢?

    1 回复  |  直到 14 年前
        1
  •  5
  •   John Hartsock    14 年前

    为什么不呢?

    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