提问人:bootsy 提问时间:7/15/2019 最后编辑:Prologbootsy 更新时间:7/16/2019 访问量:1060
“IEnumerable<>”不包含“”的定义,找不到接受类型“IEnumerable<>”的第一个参数的扩展方法
'IEnumerable<>' does not contain a definition for '', no extension method '' accepting a first argument of type 'IEnumerable<>' could be found
问:
我在控制器中收到此错误。
我调用了一个服务,并尝试在控制器中使用它,但我收到此错误。IEnumerable
public IEnumerable<User> GetUsers()
{
var userList = new List<User>();
userList.Add(new User()
{
Email = "[email protected]",
Enabled = true,
PhoneNumber = "555-555-5555",
Username = "test"
});
userList.Add(new User()
{
Email = "[email protected]",
Enabled = true,
PhoneNumber = "317-455-5555",
Username = "anotheruser"
});
return userList;
}
public ActionResult Details()
{
var user = _userService.GetUsers();
var model = new UserViewModel()
{
UserName = user.Username,
Enabled = user.Enabled
};
return View(model);
}
我希望从控制器中的“详细信息”操作中获取用户信息以显示在视图中,这是我收到的错误消息。
答:
2赞
Chris Pratt
7/16/2019
#1
您的变量实际上是一个用户列表,但您尝试访问的是实际用户实例上的属性,而不是列表。换句话说,您需要枚举用户列表:user
var users = _userService.GetUsers();
var model = new List<UserViewModel>();
foreach (var user in users)
{
model.Add(new UserViewModel
{
UserName = user.Username,
Enabled = user.Enabled
});
}
或者更简单地说:
var model = _userService.GetUsers().Select(user => new UserViewModel
{
UserName = user.Username,
Enabled = user.Enabled
});
LINQ 方法枚举集合并将 lambda 应用于返回由 lambda 的返回值组成的新列表的每个项。Select
评论