#c# #list #data-structures
#c# #Список #структуры данных
Вопрос:
У меня есть 3 ListView, которые заполняются следующим образом (ну, это может быть что угодно, listview — это просто пример):
это первый список:
LIST1 LIST2 LIST3
A1
B1
C1
Если я нажму на ‘A1’, list2 получит некоторые элементы:
LIST1 LIST2 LIST3
A1 A2
B1 B2
C1 C2
D2
E2
То же самое происходит, когда я нажимаю на элемент в list2, тогда list3 получит некоторые элементы. На этот раз я нажимаю на A2:
LIST1 LIST2 LIST3
A1 A2 A3
B1 B2 B3
C1 C2
D2
E2
Итак, идея в том, как я могу создать объект (класс), который обрабатывает все данные listview?
Если бы их было всего 2, я думал бы так:
public class StoreData
{
public string ListOne {get;set;}
public List<string> ListTwo = new List<string>();
public AddToLostTwo(string text)
{
ListTwo.Add(text)
}
}
И я мог бы сделать во время выполнения:
foreach(string str in ListOne)
{
List<StoreData> datas = new List<StoreData>();
StoreData data = new StoreData();
data.ListOne = str;
foreach(string str2 in ListTwo)
{
data.AddToListTwo(str2);
}
}
Итак, мой вопрос в том, каков наилучший способ сделать это в c # для более чем 2 списков? Обратите внимание, что позже я хочу распечатать на бумаге что-то вроде этого:
DUMP LISTS
----------
NAME VALUE VALUE
A1 A2 A3
B3
A1 B2 D3
E3
Пожалуйста, дайте мне знать, если я недостаточно ясно выразился!
Ответ №1:
На самом деле вам не нужен ваш собственный класс для этого. Как насчет использования Dictionary
подобного
Dictionary<string, IList<string>> lists = new Dictionary<string, IList<string>>();
Затем вы можете добавить новый список, например
lists.Add("List1");
И добавлять элементы в этот список, например
lists["List1"].Add("Item1");
Комментарии:
1. Не могли бы вы, пожалуйста, дать код, чтобы показать, как выгружать данные, также используя ваш код?
Ответ №2:
public class StoreData
{
public string ItemName {get;set;}
public List<StoreData> ChildList = new List<StoreData>();
public AddToChilds(StoreData data)
{
ChildList.Add(data)
}
}
На мой взгляд, использование этой структуры классов позволит вам иметь столько уровней, сколько вы хотите.