Ste*_*ven 19 c# asp.net asp.net-mvc
我正在尝试在我的视图中显示用户的下拉列表.这是我在控制器方法中使用的代码:
var users = _usersRepository.Users.Select(u => new SelectListItem
{
Text = u.FirstName + " " + u.LastName,
Value = u.UserID.ToString()
}
return View(new MyViewModel { Users = users });
Run Code Online (Sandbox Code Playgroud)
尝试转换UserID为字符串时出错:
LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式.
我如何SelectListItem从我的实体创建一个集合?
Phi*_*hil 38
ToString()只能在Linq to Objects中使用.一个简单的解决方案是插入.ToList()如下:
var users = _usersRepository.Users.ToList().Select(u => new SelectListItem
{
Text = u.FirstName + " " + u.LastName,
Value = u.UserID.ToString()
});
return View(new MyViewModel { Users = users });
Run Code Online (Sandbox Code Playgroud)
这将返回User表中的所有用户.如果您可以减少从数据库中获得的用户数量,那么查询将更有效,例如
var users = _usersRepository.Users.Where( u => .... ).ToList().Select(u => new SelectListItem
{
Text = u.FirstName + " " + u.LastName,
Value = u.UserID.ToString()
});
return View(new MyViewModel { Users = users });
Run Code Online (Sandbox Code Playgroud)
我想你在找 SqlFunctions
using System.Data.Objects.SqlClient;
var users = _usersRepository.Users.Select(u => new SelectListItem
{
Text = u.FirstName + " " + u.LastName,
Value = SqlFunctions.StringConvert((double?)u.UserID)
}
return View(new MyViewModel { Users = users });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24791 次 |
| 最近记录: |