cannot convert from 'System.Collections.Generic.IEnumera
本文关键字:System Collections Generic IEnumera convert from cannot | 更新日期: 2023-09-27 18:05:04
我试图从对象中存储多个值的列表,并通过循环迭代将其存储在下拉列表中。
ddlCountries.Items.AddRange((from country in countries
select new List<string> {
country.Name,
country.Slug,
country.Iso
})).ToList();
然而,我得到这个错误信息与选择关键字:
参数1:不能从'System.Collections.Generic. '转换。IEnumerable>'到' system . web . ui . webcontrols . listtitem []'
最初我测试,以确保它可以从列表中检索值使用listtitem:
ddlCountries.Items.AddRange((from country in countries
select new ListItem(country.Name, country.Slug))
.ToArray<ListItem>());
这工作得很好,但是我需要检索一个额外的字段(country.iso)。我已经搜索了一个解决方案的论坛,但我有一个困难的时间找到解决这个问题的方法。如有任何帮助,我将不胜感激。
嗯,看到ListItem
类只包含Text
和Value
,您需要某种方法将country.Slug
和country.Iso
加入到单个字符串值中。
ddlCountries.Items.AddRange((from country in countries
select new ListItem(
country.Name,
country.Slug + "," + country.Iso))
.ToArray());
这将使您仍然生成ListItem[]
而不是List<List<string>>
。
你可以试试匿名类型
var src = from country in countries.AsEnumerable()
select
name = country.Name,
slug = country.Slug,
iso = country.Name + " " + country.slug
ddlCountries.dataSource = src.AsQueryable();
ddlCountries.DataBind();
List中每个项目只期望一个String。您的新类型有三个字段。你可以这样做:
<>之前ddlCountries.Items.AddRange ((来自国家中的国家选择新的{国家。名称、国家。蛞蝓,国家。Iso}) .ToList ());之前但是,为什么需要创建List呢?您是否尝试将查询直接作为数据源绑定到下拉列表?然后,您可以定义哪个字段(例如Name)为可见字段,而鼻涕/Iso为值字段——这是您现在必须要做的事情。