AddDictionary对象到对象列表

时间:2016-02-02 23:13:27

标签: c#

我有一个对象列表:

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&GT;'至   'System.Collections.Generic.List'

IdNamePair包含IdName

3 个答案:

答案 0 :(得分:2)

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

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

subjectBaseInfo.Languages = CountryLanguages[0];

CountryLanguages[0]是键0的值。与此键对应的值与此词典中的每个其他键一致,是List<IdNamePair>个对象。后者是你需要的。

答案 1 :(得分:1)

两种类型不同。 subjectBaseInfo.Languages只是一个List<IdNamePair>,而CountryLanguages是由List<IdNamePair>索引的一系列int

为了做到这一点,你有两种可能性。

如果我认为subjectBaseInfo也有Id属性,那么您可能希望这样做:

subjectBaseInfo.Languages = CountryLanguages[subjectBaseInfo.Id];

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

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

答案 2 :(得分:0)

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

subjectBaseInfo.Languages = CountryLanguages[3]

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