【发布时间】:2011-06-11 16:00:53
【问题描述】:
我在尝试使用 C# 中的 yield return 功能时遇到此错误。该错误出现在视觉工作室内部的选择中,我不太明白。在我看来,我正在将字符串转换为 ListItem,然后将批次作为 IEnumerable 返回。我对收益回报和 IEnumerable 的理解很可能不合时宜,因此我们将不胜感激。注释代码是老派的做法,可以正常工作。
不能隐式转换类型 'System.Collections.Generic.IEnumerable' 到 'System.Web.UI.WebControls.ListItem'
public partial class CloseIncident : System.Web.UI.Page
{
private ClevelandIncidentRepository repo = new ClevelandIncidentRepository();
protected void Page_Load(object sender, EventArgs e)
{
SetDropDown(InitialType, repo.GetMainTypes());
}
private void SetDropDown(DropDownList dropDown, IEnumerable<string> items)
{
dropDown.Items.Clear();
dropDown.Text = string.Empty;
dropDown.Enabled = items.Count() > 0;
dropDown.Items.AddRange(ToListItem(items).ToArray());
}
private IEnumerable<ListItem> ToListItem(IEnumerable<string> results)
{
yield return from result in results
select new ListItem(result);
//List<ListItem> items = new List<ListItem>();
//items.AddRange(from result in results
// select new ListItem(result));
//return items;
}
}
【问题讨论】:
-
在我看来
ToListItem最好命名为ToListItems,因为它返回许多ListItems。
标签: c# asp.net ienumerable listitem yield-return