3


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;
}

編集: OK、@John Hartsockが簡単な解決策を示した後、少しばかげていると感じます...
もっと複雑な文字列操作をしたい場合はどうなりますか?

4

1 に答える 1

5

なぜこれではないのですか?

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

于 2010-11-22T18:26:01.727 に答える