【问题标题】:AddDictionary object to list of objects将字典对象添加到对象列表
【发布时间】:2016-02-03 07:25:21
【问题描述】:

我有一个对象列表:

public List<IdNamePair> Languages
{
    get { return languages; }
    set { languages = value; }
}

如何从同一个IdNamePair 的字典中添加到上面的语言列表中?

protected Dictionary<int, List<IdNamePair>> CountryLanguages { get; set; }

我正在尝试这样做:

subjectBaseInfo.Languages = CountryLanguages;

但是得到这个错误:

不能隐式转换类型 'System.Collections.Generic.Dictionary>' 到 'System.Collections.Generic.List'

IdNamePair 包含 IdName

【问题讨论】:

    标签: c#


    【解决方案1】:

    您得到的错误是预期的错误。您不能将字典分配给类型为列表的变量。

    您可能需要以下内容(使用正确的键值):

    subjectBaseInfo.Languages = CountryLanguages[0];
    

    CountryLanguages[0] 是键 0 的值。与此字典中的每个其他键一样,与此键对应的值是 List&lt;IdNamePair&gt; 对象。后者是你需要的。

    【讨论】:

      【解决方案2】:

      这两种类型是不同的。 subjectBaseInfo.Languages 只是一个单一的List&lt;IdNamePair&gt;,而CountryLanguages 是由int 索引的一系列List&lt;IdNamePair&gt;

      因此,他们分配给你有几种可能性。

      如果我假设 subjectBaseInfo 也有一个 Id 属性,那么您可能想要这样做:

      subjectBaseInfo.Languages = CountryLanguages[subjectBaseInfo.Id];
      

      但是,如果subjectBaseInfo 没有Id,那么您可能希望从CountryLanguages 中的所有列表中获取所有IdNamePair 作为一个新的单个列表。在这种情况下,您可以这样做:

      subjectBaseInfo.Languages = CountryLanguages.SelectMany(kvp => kvp.Value).ToList(); 
      

      【讨论】:

      • linq 查询对我有用,因为我想要从一个到另一个的所有项目。
      【解决方案3】:

      您必须提供Dictionary 的密钥。像这样:

      subjectBaseInfo.Languages = CountryLanguages[3]
      

      或您在填充 Dictionary 对象时使用的其他 int

      【讨论】:

        猜你喜欢
        • 2016-11-08
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 2015-01-13
        • 2020-04-18
        • 1970-01-01
        • 2012-11-21
        相关资源
        最近更新 更多