“ IEnumerable <>”不包含“”的定义,找不到扩展方法“接受类型为“ IEnumerable <>”的第一个参数的扩展方法

时间:2019-07-15 15:21:39

标签: c# asp.net-core ienumerable

我在控制器中收到此错误。

我调用了IEnumerable服务,并试图在控制器中使用它,但出现此错误。

public IEnumerable<User> GetUsers()
{
    var userList = new List<User>();
    userList.Add(new User()
    {
        Email = "testc@test.com",
        Enabled = true,
        PhoneNumber = "555-555-5555",
        Username = "test"
    });
    userList.Add(new User()
    {
        Email = "user@domain.com",
        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);
}

我希望从控制器的“详细信息”操作中获取用户信息以在视图中显示,这是我收到的错误消息。

1 个答案:

答案 0 :(得分:2)

您的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 Select方法枚举集合,并将lambda应用于每个项目,并返回由lambda的返回值组成的新列表。