2010-11-22 46 views
3


我正在從Linq-to-SQL切換到Linq-to-Entities,並在轉換過程中遇到錯誤「LINQ to Entities does不識別方法'System.String格式(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; 
} 

編輯: 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

哎呀 - 多麼簡單:) ...如果我想要做更復雜的字符串操作,將有什麼建議? – 2010-11-22 18:28:09