Создайте словарь строковых списков, который будет содержать списки машин с указанием года и ключа:
private readonly Dictionary<int, List<string>> _carsByYear =
new Dictionary<int, List<string>>();
private readonly List<int> _years = new List<int>();
Затем вы можете заполнить его
List<string> cars = null;
foreach (string line in File.ReadLines(@"C:\Users\Me\cars.txt")) {
if (!String.IsNullOrWhiteSpace(line)) {
if (Int32.TryParse(line, out int year)) { // We have a year
if (_carsByYear.TryGetValue(year, out var existingList)) {
cars = existingList;
} else {
// Add a new list with year as the key
_years.Add(year);
cars = new List<string>();
_carsByYear.Add(year, cars);
}
} else { // We have a car
cars.Add(line);
}
}
}
Теперь вы можете назначить _years
на DataSource
первого ListBox.Вы можете получить выбранный год (SelectedIndexChanged
событие) с помощью
int year = (int)listBox1.SelectedItem;
. В этом году вы можете получить список автомобилей с помощью
var selectedCarList = _carsByYear[year];
. Присвойте его DataSource
извторой ListBox.