2015-06-18 73 views
0
var result = from q in memberDbSet 
    select new 
    { 
     no = q.no, 
     fullName = q.firstName + ' ' + q.lastName 
    }; 

無法創建類型的恆定值「System.Object的」。在此上下文中僅支持 基元類型或枚舉類型。Asp.net C#,無法創建類型的恆定值「System.Object的」

我得到了上面的錯誤,我做錯了什麼?

+0

這是LINQ到實體的恆定值? –

+0

不是'System.Char'?什麼是'memberDbSet'? –

+0

memberDbSet is IQueryable

回答

2

發生這種情況是因爲LINQ提供程序無法將q.firstName + ' ' + q.lastName表達式轉換爲SQL。一個解決這個是調用AsEnumerable()把內存中的數據,並做選擇的其餘部分有:

var result = (from q in memberDbSet /* where clause goes here */) 
    .AsEnumerable() 
    . Select(q => new { 
     no = q.no, 
     fullName = q.firstName + ' ' + q.lastName 
    }); 

確保你把所有過濾到查詢之前AsEnumerable()避免讀成記憶比您需要的更多數據。

+0

非常感謝! –

+0

'AsEnumerable'不是一個真正的解決方法,只是一種可以作爲最後手段應用的解決方法。我相信在這種情況下,根本問題可以修復。作爲記錄。 –

0

您將連接字符串和char。顯然,實體框架不喜歡那樣。它變成

fullName = q.firstName + " " + q.lastName 

的唯一的事情是,我本來期望

無法創建類型「System.Char」

相關問題