我正在尝试呈现用户的下拉列表,并且很难将用户对象列表转换为List。我尝试过的各种尝试都包括使用.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()。上述错误消息是:
无法隐式转换类型 &#39; System.Collections.Generic.IEnumerable&#39; 到&#39; System.Collections.Generic.List&#39;。 存在显式转换(您是否错过了演员?)
所以我尝试了.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执行此操作。我需要做些什么改变来实现这个目标?谢谢!
答案 0 :(得分:4)
最后ToList()
来电:
List<SelectListItem> standardList = userList.Select(u => new SelectListItem
{
Text = u.UserName,
Value = u.UserToken.ToString()
}).ToList();
答案 1 :(得分:3)
你很亲密。选择是正确的方法,你只需要在选择之前做一个ToList()。 :