簡體   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