Хранить коллекцию полей данных и извлекать их по идентификатору - PullRequest
0 голосов
/ 04 августа 2010

В C # как я могу сохранить коллекцию значений, чтобы, если я захочу получить определенное значение позже, я мог сделать что-то вроде:

myCollection ["Area1"]. AreaCount = 50;

или

count = myCollection ["Area1"]. AreaCount;

Общий список?

Я бы хотел сохранить более одного свойства для "ключа". Является ли класс ответом?

Ответы [ 3 ]

2 голосов
/ 04 августа 2010

Вы ищете Dictionary<string, YourClass> класс .(Где YourClass имеет свойство AreaCount)

1 голос
/ 04 августа 2010

EDIT На основании вашего комментария создается впечатление, что вам нужен словарь (как уже предлагалось), в котором ваш объект содержит все ваши «значения».

Для экземпляра:

public class MyClass
{
   public int AreaCount;
   public string foo;
   public bool bar;
}

//Create dictionary to hold, and a loop to make, objects:
Dictionary<string, MyClass> myDict = new Dictionary<string, MyClass>();
while(condition)
{ 
   string name = getName(); //To generate the string keys you want
   MyClass mC = new MyClass();
   myDict.Add(name, mC);
}

//pull out yours and modify AreaCount
myDict["Area1"].Value.AreaCount = 50;

В качестве альтернативы вы можете добавитьstring «Имя» для вашего класса (я использую поля для примера, вы, вероятно, будете использовать свойства) и используйте Linq:

//Now we have a list just of your class (assume we've already got it)
myClass instanceToChange = (from items in myList
                          where Name == "Area1"
                          select item).FirstOrDefault();

myClass.AreaCount = 50;

Это помогает больше?

ОРИГИНАЛЬНЫЙ ОТВЕТ Я не совсем уверен, что вы спрашиваете, но я дам его назад.

Учитывая список объектов, из которых вам нужно захватить конкретный объект, есть (как правило) 4 способа - в зависимостив соответствии с вашими потребностями.

Generic List<T> действительно делает это хорошо только в том случае, если ваш объект уже поддерживает какой-либо вид поиска (например, String.Contains ()).

A SortedList использует IComparer для сравнения и сортировки значений Key и упорядочения списка таким образом.

A Словарь хранит Key и Value, чтобы можно было извлечь объекты KeyValuePair.

A HashTable использует Ключи и Значения, где Ключи должны реализовывать GetHashCode() и ObjectEquals

Конкретный вам нужен будет варьироваться в зависимости от ваших конкретных требований.

0 голосов
/ 04 августа 2010

Эта функциональность обеспечивается индексаторами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...