我有一个对象列表:
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
包含Id
和Name
。
答案 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
键