2013-08-30 33 views
0
ViewData["dropDown_ViewOwnerShare"] = correspondingDropDownValue.Select(j => new SelectListItem { Text = j.ListOfValue, Value = j.ListOfValue, Selected = j.ListOfValue == x.DefaultValue }).ToList(); 

基于上述代码,成功生成了下拉列表的viewdata [“dropDown_e”]。现在为每个元素,而不是使用j.ListOfValue作为值,我想使用j.UserID作为值。问题是j.UserID是从数据库返回的长类型,Value总是期待一个字符串。我试过j.UserID.ToString(),但它有编译错误。我可以知道我该如何处理它?MVC如何在ViewData中投入很长的字符串Dropdownlist

+0

什么是编译错误 – Rikon

+0

@Rikon,LINQ到实体无法识别方法“String.String的ToString()”方法,而这种方法不能被翻译成店表达 –

回答

1

什么是correspondingDropDownValue的类型?假设它是IQueryable<T>,对吧?首先,您需要从数据库中获取所有必填字段,然后将结果转换为IEnumerable<T>,然后才能创建SelectListItems列表。事情是这样的:

correspondingDropDownValue 
    .Select(j => new {Value = j.UserID, Text = j.SomeTextField}) // SELECT UserID, SomeTextField FROM SomeTable 
    .AsEnumerable()  // Evaluate the query 
    .Select(j => new SelectListItem // Work with in-memory objects using LINQ to Objects instead of LINQ to Entities 
    { 
     Value = j.Value.ToString(), 
     Text = j.Text, 
     Selected = j.Value == x.DefaultValue 
    }) 
    .ToList() 
相关问题