Отделить Socket & cpu_name
Уже задавал данный вопрос, так и не разобрался. Прошу помочь, понимающих людей.
Ссылка на вопрос: Отделить socket от CPU_name
Также я, скорее всего, разобрался почему так происходит, но не могу придумать, как это исправить:
//получаем данные
_records = SOCKETsIntel.GetSOCKETintelValues();
//заполняем комбобокс сокетов
_bsSockets.Add(_socketAll);
_records.Select(r => r.Socketintel)
.Distinct()
.ToList()
.ForEach(s => _bsSockets.Add(s));
//заполняем комбобокс процессоров
UpdateComboBoxCpus(_socketAll);
//подписка на событие выбора в комбобоксе сокетов
_bsSockets.CurrentChanged += (s, a) => UpdateComboBoxCpus(_bsSockets.Current as String);
// Sobitie dlya Updata ComboboxCPUs
private void UpdateComboBoxCpus(string selectedValue)
{
_bsCpus.Clear();
if (selectedValue.Equals(_socketAll))
{
//полный список
_records.ForEach(r => _bsCpus.Add(r));
}
else
{
//список с выборкой по сокету
_records.Where(r => r.Socketintel.Equals(selectedValue))
.ToList()
.ForEach(r => _bsCpus.Add(r));
}
}
После отладки данного блока кода я получил то, что, при выполнении проверки
if (selectedValue.Equals(_socketAll)), оно выполняет его, потом кидает вверх на:
//подписка на событие выбора в комбобоксе сокетов
_bsSockets.CurrentChanged += (s, a) => UpdateComboBoxCpus(_bsSockets.Current as String);
И по итогу выполняет блок:
_records.Select(r => r.Socketintel)
.Distinct()
.ToList()
.ForEach(s => _bsSockets.Add(s));
По новой...
Пробовал делать Clear, вот так:
, но оно удаляет все, уже понял, что это не выход. Надеюсь на поддержку.
Ответы (1 шт):
Раз вся информация сохранена в CSV, то решение нереально простое.
Я как-то создавал тему: Как просто работать с / открыть / изменить / сохранить Excel - xlsx / CSV файлы
Именно эту библиотеку я и буду использовать в ответе.
List<String> processors = new List<String>()
List<String> sockets = new List<String>()
Csv csv = new Csv();
csv.FileOpen("c:\\file1.csv");
foreach( var row in csv)
{
if row.lenght == 2 // если в строке 2 ячейки
{
processors.add(row[0]);//первая ячейка строки
sockets.add(row[1]); // вторая ячейка строки
}
}
код не проверял, могут быть мелкие логические или синтаксические ошибки.
И, конечно же, ты можешь всовывать эти данные не в 2 списка, а, скажем, в дикшонари или в собственный инстанс класса. Вобщем - как тебе удобнее, это просто пример и не более того.
Ну и перед тем как ассайнить список вариантов в комбо-бокс не забывай очищать старый список вариантов. Вот, собственно, все что нужно сделать.

