IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items.Add()
我不知道如何使用Linq将列表添加到下拉列表中。感谢。
答案 0 :(得分:3)
您使用AddRange
方法:
var list = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items.AddRange(list.ToArray());
答案 1 :(得分:1)
根据您使用的下拉控件,其中任何一个都可以使用:
如果允许将其项目设置为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。当然,使用您自己的属性
答案 2 :(得分:1)
或者如果您已经在方法中检查了数据的完整性,您可以简单地说:
ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId));
答案 3 :(得分:1)
以前我把它作为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);
}
答案 4 :(得分:0)
由于ddlReprotFavorite is an UI control and its
项property represent a set of controls as well you ca
n不直接添加您的业务实体,而不是使用DataSource属性,该属性会自动从基础业务实体创建Items集合。
IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);
ddlReportFavorite.DataSource = list;
答案 5 :(得分:0)
IEnumerable<T>
扩展了Union<T>
方法,该方法将两个IEnumerable<T>
联合起来。这是更漂亮的方式,没有强加它ToList()
。
var reportFavoriteList = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items = ddlReportFavorite.Items.Union(reportFavoriteList);