2010-11-22 14 views
3


Linq-to-SQLからLinq-to-Entitiesへの切り替えを行っていますが、変換の過程で「LINQ to Entities doesメソッド 'System.String Format(System.String、System.Object、System.Object)'メソッドを認識せず、このメソッドをストア式に変換することはできません。次のコードが原因です。私はこれが私が以下で使用している動的なタイプの生成を行う必要があることを理解しています。それでも動的なタイプを使用してL2Eを使用することはできますか?Linq to Entities - NotSupportedException - 動的型 - string.Format

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

EDIT: OK @ジョンHartsockは私に簡単な解決策を示した後、私はいくつかのより複雑な文字列操作をやってみたかった場合はどう...
を少し愚かな感じ?

答えて

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

+0

うわあがある - 私は、より複雑な文字列操作をやってみたかった場合はどのようにシンプルな:) ...、あなたは何を示唆していますか? –

+0

@ Ed.S。うれしいことに、LINQからエンティティへのSQLへの関数変換を示すリンクを上に置くことができます。http://msdn.microsoft.com/en-us/library/cc716715.aspx –