如何在Dictionary中查找类的实例?

时间:2014-01-24 15:36:53

标签: c# wpf class mvvm dictionary

如果我一直在研究这个问题,我之前得到了一些帮助,并且用户说最好使用Dictionary来存储我的CountryPlaces

所以我创建了Dictionary

Dictionary<string, NewCountryClass> NTCD = new Dictionary<string, NewcountryClass>();

当用户单击该按钮时,它将触发此类,我希望它在运行时在newCountryClass内创建Dictionary的实例。它会添加newCountryTitle.Country的字符串,然后添加Class

public void AddCountryCollection()
{

    newCountryClass = new NewCountryClass(newCountry,"");
    Collections.Add(newCountryClass);
    NTCD.Add(newCountryClass.Country, newCountryClass);
}

因此,假设用户已添加Country已在运行时创建此Dictionary,并且他们已添加4 Countries,但现在需要返回并在第二个国家/地区内添加Place标签。

这是newCountryClass

private string _country;

public string Country
{
   get { return _country; }
   set
   {
      if (_country.Equals(value))
         return;

      _country= value;
      RaisePropertyChanged(() => Country);
   }
}

private ICollection<string> _places;
public ICollection<string> Places
{
   get
   {
      if (_places== null)
         _places= new ObservableCollection<string>();
      return _places;
   }
   set
   {
      if (value == _places)
         return;

      _places= value;
      RaisePropertyChanged(() => Places);
   }
}

如果他们已经创建了4,并且他们想要将Place添加到他们创建的第二个 Country内的列表中,我该如何找到它?

2 个答案:

答案 0 :(得分:1)

只需使用您存储的密钥:

NTCD["GER"].Places.Add("New Place inside GER");

如果您只想知道第二个,请选择List<NewCountryClass>并使用for按索引进行迭代,或者选择OrderedDictionary。它将对象键,对象值作为参数添加,您可以通过NTCD[3]访问它。

OrderedDictionary Class

答案 1 :(得分:0)

您使用的是Dictionary,因此项目处于特定索引时没有任何概念。相反,项目位于特定键,在您的情况下是您的Country属性的值。

如果您想通过数字索引获取项目,则需要使用类似List的数据结构。