3
public ViewResult Index()
{
     var theList = from p in db.theTable
                   select p.Id + p.lastName;

     ViewBag.theList = new SelectList(theList);                             
     return View();
}

上記のコードは私のコントローラーにあり、次のエラーが発生します。

「タイプ'System.Int32'をタイプ'System.Object'にキャストできません。LINQtoEntitiesは、エンティティデータモデルプリミティブタイプのキャストのみをサポートしています。」

問題はint(id)とstring(lastName)を連結しようとしていることだと思います。どちらか一方だけでも問題なく機能し、firstNameとlastNameを連結できたからです。

試しToString()てみConvert()ましたが、うまくいきませんでした。

4

1 に答える 1

2

あなたが使用する必要がありますStringConvert

 var theList = from p in db.theTable
               select SqlFunctions.StringConvert((double)p.Id) + p.lastName;

しかし、個人的には、クライアントで文字列操作を行うことを好みます。とにかく文字列をフォーマットする方法に柔軟性があります...このように

var theList = from p in db.theTable
               select new { p.Id, p.lastName };
ViewBag.theList = new SelectList(theList);   

...

@foreach(var p in ViewBag.theList)
{
    var str = string.Format("{0}{1}", p.Id, p.lastName);
} 
于 2013-03-18T14:39:49.877 に答える