2012-04-23 22 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'はどのようなタイプですか? – Rup

答えて

4

それはstring Convert.ToString(object)を認識しない...そう... はそのを使用しないでください。あなたは直接.ToString()を試すこともできますが、率直に言って、私はちょうど選択します:

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

を、ローカルに任意の文字列化を心配します。

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

を、次いでformattedに結合する:または少なくとも別突起(AsEnumerable()この組成から延期反復に変化することに注意)。これは、3つの列に対してクエリを実行しますが、ローカルでフォーマットします。

+1

"...これをコンポジションから延期された繰り返しに変更します。" - そのステートメントは揺れる!私は ' LINQのすべての "方言"で私のシンク・アンド・スイムの経験を通して自分自身に気づいた... 最近、MSDNのドキュメントはあまり整理されていませんが、LINQ絶対マスターの秘密のいくつかのソースにピンポイントできますか? – fernandoespinosa

関連する問題