繁体   English   中英

使用LINQ,如何投射列表 <object> 到清单 <SelectListItem> 在C#中?

[英]Using LINQ, how can I cast a List<object> to a List<SelectListItem> in C#?

我正在尝试呈现用户的下拉列表,并且很难将用户对象列表投射到列表中。 我尝试过的各种尝试包括使用.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进行此操作。 我需要进行哪些更改才能使其正常工作? 谢谢!

ToList()调用在末尾进行:

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

你近了 选择是正确的方法,您只需要在选择之前做一个ToList()之后即可。 :]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM