Как получить данные из Arraylist - PullRequest
1 голос
/ 02 июня 2011

Итак, в предыдущем вопросе я спросил, как я могу объединить несколько списков массивов в один список массивов.

Этот ответ сработал (также указан ниже). Тем не менее, у меня возникли проблемы с получением записей. Как мне получить данные из этого многомерного массива. Например, что, если я хочу получить только адрес?

ArrayList Names = new ArrayList(); 
ArrayList Phone = new ArrayList(); 
ArrayList Address = new ArrayList(); 
ArrayList res = new ArrayList();  
for(int i=0; i<Names.Count; i++) 
{   
  res.Add(new string[]{Names[i].ToString(), Phone[i].ToString(), Address[i].ToString()}); 
} 

Ответы [ 4 ]

6 голосов
/ 02 июня 2011

Вы могли бы сделать что-то вроде следующего ... Я хочу убедиться, и я отмечаю, что вы можете предложить более совершенные структуры данных или классы контейнеров, если можете.

string someAddress = ((string[])res[0])[2];

В этомНапример, мы берем объект (строковый массив) по первому индексу res и затем индексируем в строковый массив, в котором сохранен адрес.

Вы можете рассмотреть что-то вроде следующего, хотя и содержащее ваши данныес напечатанным списком ..

public class Person
{
    public string Name { get; set; }
    public string Phone { get; set; }
    public string Address { get; set; }
}

...

List<Person> people = new List<Person>();
people.Add(new Person() { Name = "Not Me", Phone = "(555) 212-1234", Address = "123 Fake St." });

string address = people[0].Address;
1 голос
/ 02 июня 2011

Могу ли я спросить, почему вы создаете списки массивов, как вы?На мой взгляд, вам лучше создать пользовательский объект, который имеет 3 свойства -> Имя, Телефон и Адрес, и просто создать список этих объектов:

Резидентный класс:

public class Resident
{
  public string Name { get; set; }
  public string Phone { get; set; }
  public string Address { get; set; }
}

Код:

List<Resident> residents = new List<Resident>();
// populate list

foreach (var res in residents)
  Console.WriteLine(res.Address);
1 голос
/ 02 июня 2011

Предполагая, что это .NET 2.0, а не что-нибудь позднее, поэтому вам нужно придерживаться ArrayList, я бы просто ввел новый класс для хранения вашей информации.

public class Person
{
    private string _name;
    public string Name { get { return _name; } }
    public Person(string name, string phone, string adress)
    {
        _name = name;
        ...
    }
}

Затем вы можете заполнить экземплярыэтот класс в вашем arraylist и доступ к его свойствам.

1 голос
/ 02 июня 2011

Лично я бы сделал это структурой.

public struct Record
{
  public String Name;
  public String Telephone;
  public String Address;
}

И вставьте информацию в структуры, а затем снова на них ссылайтесь Что-то вроде:

ArrayList records = new ArrayList();
for (...) {
  records.Add(new Record(){
    Name = Names[i].ToString(),
    Telephone = Phone[i].ToString(),
    Address = Address[i].ToString()
  });
}
...
Console.WriteLine(records[0].Address);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...