簡體   English   中英

使用Linq如何添加列表項

[英]Using Linq how I have to add list items

IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items.Add()

我不知道如何使用Linq將列表添加到下拉列表中。 謝謝。

您使用一個AddRange方法:

 var list = reportService.GetReportFavorites(userId);
 ddlReportFavorite.Items.AddRange(list.ToArray());

根據您使用的下拉控件,以下兩種方法都可以起作用:

如果允許其Items設置為IEnumerabe<ReportFavourite>

ddlReportFavorite.Items = reportService.GetReportFavorites(userId);

如果Items實現AddRange方法:

ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId));

或者,如果這些失敗

foreach(var reportFavourite in reportService.GetReportFavorites(userId))
    ddlReportFavorite.Items.Add(reportFavourite);

這兩種方法都不是真正的“使用LINQ”,因為LINQ並不是執行此操作的好工具。 LINQ是無副作用的。

編輯:您的評論表明您正在使用System.Web.UI.WebControls.DropDownList 在這種情況下,Items集合僅接受ListItem實例,因此您需要從ReportFavourites創建它們。 嘗試

foreach(var listItem in reportService.GetReportFavorites(userId)
                                     .Select(r => new ListItem(r.Id, r.Name))
    ddlReportFavorite.Items.Add(listItem);

在這里,我假設組合框應顯示ReportFavourite.Name並具有ReportFavourite.Id的值。 當然,使用您自己的屬性

或者,如果您已經在方法中檢查了數據的完整性,則可以簡單地說:

ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId));

以前我把它當作IEnumerable。 現在我更改為IList。 現在工作正常。 謝謝大家。

    int userId = workContext.CurrentUser.UserID;
    var reportFavoriteList = reportService.GetReportFavorites(userId);
    int count = reportFavoriteList.Count;

    for (int i = 0; i < count; i++)
    {
        ddlReportFavorite.Items.Add(reportFavoriteList[i].FavoriteName);
    }

由於ddlReprotFavorite is an UI control and its Items property represent a set of controls as well you ca不能直接添加您的業務實體,而不必使用DataSource屬性,該屬性會自動從基礎業務實體創建Items集合。

IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);      
ddlReportFavorite.DataSource = list;

IEnumerable<T>由方法Union<T>擴展,該方法將兩個IEnumerable<T> 這是更漂亮的方法,無需將其強制轉換為ToList()

var reportFavoriteList = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items = ddlReportFavorite.Items.Union(reportFavoriteList);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM