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'。LINQ to Entities 仅支持转换实体数据模型原始类型。”

我相信问题是试图连接一个 int (id) 和 string (lastName),因为任何一个都可以正常工作,我能够将 firstName 和 lastName 连接在一起。

我试过ToString()and 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 回答