2013-07-26 78 views
1

當使用select d.FullName時,獲取錯誤「指定類型成員FullName在LINQ to Entities中不受支持」,是否因爲它不是表的一部分?指定類型成員FullName在LINQ to Entities中不受支持

我該如何解決這個問題?

感謝

用戶類
public partial class tblUser 
{ 
    public tblUser() 
    { 
     this.Equipment = new HashSet<tblEquipment>(); 
    } 

    public int ID { get; set; } 
    public string Forename { get; set; } 
    public string Surname { get; set; } 

    public string FullName { get { return Forename + " " + Surname; } } 

WITH ERROR QUERY

string[] arrUsers = (from d in db.tblUsers select d.FullName).ToArray(); 

回答

3

你必須手動選擇:

string[] arrUsers = (from d in db.tblUsers select (d.Forename ?? "") + " " + (d.Surname ?? "")).ToArray(); 
+1

只是一個說法:進行串聯時要小心NULL值。 –

+0

@RaphaëlAlthaus'null'將被罰款(或應該) –

+1

如果'd.Forname'爲空且'd.Surname'不是,例如,你會得到一個空結果,而不是'd.Surname' –

2

,因爲它不存在於你的db,所以linq2entities不能生成正確的sql

所以

解決方法1

串連在查詢中,使用COALESCE操作(如果你不這樣做,一個部分是NULL,都將是無效)。

select d.ForeName ?? string.Empty + " " + d.Surname ?? string.Empty 

溶液2

select d.Forename, d.Surname 

,你將能夠使用FullName當你已經列舉了可查詢

Solution3

使用計算列

相關問題