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
n 不会直接添加您的业务实体,而不是使用 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);