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)。我已经搜索了一个解决方案的论坛,但我有一个困难的时间找到解决这个问题的方法。如有任何帮助,我将不胜感激。

cannot convert from 'System.Collections.Generic.IEnumera

嗯,看到ListItem类只包含TextValue,您需要某种方法将country.Slugcountry.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为值字段——这是您现在必须要做的事情。

相关文章: