如何使用LINQ强制转换list对象?select listtitem>在c#

本文关键字:select listtitem 对象 list LINQ 何使用 转换 | 更新日期: 2023-09-27 18:14:48

我试图呈现用户的下拉列表,并且很难将用户对象列表转换为列表。我尝试过的各种尝试包括使用。tolist()和。cast,但这些都失败了,如下所示。

这是我目前的方法。

public static List<SelectListItem> getStandardDropdownList(EnumStatusIsActive.StatusIsActive statusIsActive, UserListValueType userListValueType)
{
    List<SelectListItemUser> userList = Shared.getDataForStandardDropdownListItemUser(UserListType.ExternalUser, statusIsActive, null);
    List<SelectListItem> standardList = userList.Select(u => new SelectListItem
    {
        Text = u.UserName,
        Value = u.UserToken.ToString()
    });
}

在userList.Select()处失败。上面的错误消息是:

不能隐式转换类型"System.Collections.Generic.IEnumerable"System.Collections.Generic.List"。存在显式转换(您是否缺少强制类型转换?)

所以我尝试了。tolist(),如下所示。但这导致了同样的错误。

List<SelectListItem> standardList = userList.ToList().Select(u => new SelectListItem ...

我试着用Cast,像这样…

IEnumerable<SelectListItemUser> userCollection = Shared.getDataForStandardDropdownListItemUser(UserListType.ExternalUser, statusIsActive, null);
List<SelectListItem> standardList = userCollection.Cast<SelectListItemUser>().Select(u => new SelectListItem ...

仍然没有爱情,并且同样的错误信息。现在我可以通过for/each循环遍历列表以创建必要的List<SelectListItem>,但我更喜欢通过Linq来完成。我需要做什么改变才能让它工作?谢谢!

如何使用LINQ强制转换list对象?select listtitem>在c#

ToList()呼叫结束:

List<SelectListItem> standardList = userList.Select(u => new SelectListItem
{
    Text = u.UserName,
    Value = u.UserToken.ToString()
}).ToList();

你差一点。Select是正确的方法,您只需要在Select之后而不是之前执行ToList()。:]