2012-04-23 76 views
0

我不斷從下面的代碼中收到此錯誤消息。我究竟做錯了什麼?LINQ to Entities無法識別該方法System.String

LINQ to Entities不識別方法'System.String ToString(System.Object)'方法,並且此方法不能轉換爲存儲表達式。

var pros = from programs in db.Programs 
      select new { 
       programs.ProgramID, 
       val = (programs.ProgramShortName + " On: " + (Convert.ToString(programs.ProgramStartDate) ?? "")) 
          }; 

lbPrograms.DataTextField = "val"; 
lbPrograms.DataValueField = "ProgramID"; 
lbPrograms.DataSource = pros; 
lbPrograms.DataBind(); 
+0

'ProgramStartDate'是什麼類型?你可以把它寫成'((programs.ProgramStartDate!= null)?programs.ProgramStartDate.ToString():「」'而不是? – Rup 2012-04-23 10:35:49

回答

4

它不承認string Convert.ToString(object) ...所以... 不使用。您可以嘗試直接.ToString(),但坦率地說,我只想選擇:

... 
select new { 
      programs.ProgramID, 
      programs.ProgramShortName, 
      programs.ProgramStartDate } 

和當地擔心任何字串。或至少一個單獨的投影(注意,AsEnumerable()改變這從組合物推遲迭代):

var formatted = from programs in pros.AsEnumberable() 
       select new { 
       programs.ProgramID, 
       val = (programs.ProgramShortName 
     + " On: " + (Convert.ToString(programs.ProgramStartDate) ?? "")) }; 

,然後結合到formatted。這將對3列進行查詢,但在本地格式化。

+1

「...把這個從合成改爲延遲迭代。」 - 我注意到我自己通過我在所有LINQ的「方言」中的沉浸式或游泳體驗... MSDN文檔最近沒有組織得很好,您能否指出LINQ絕對主密鑰的某些來源? – fernandoespinosa 2012-12-14 21:32:48

相關問題