Правильный способ поиска значения из таблицы и заполнения его данными
Мой текущий проект-это в основном преобразование электронной таблицы excel в приложение windows. Я наткнулся на раздел рабочего листа, используя таблицу и vlookups. Предположим, что таблица выглядит так (точно так же, только каждый квартал с дополнительной строкой, добавленной снизу):
Я хочу имитировать vlookups в C#, и я могу придумать несколько различных способов, однако я ищу "лучший" способ. Под "лучшим" я имею в виду самый простой код и большинство ремонтопригодный, я не имею в виду скорость, если он работает менее чем за 10 секунд, это достаточно хорошо. это происходит в методе, который имеет имя региона и Yr/Qrt, передаваемые в виде строк. Используя их, какие структуры данных я должен использовать для хранения табличных данных и как я могу сделать это в наименьшем количестве кода?
EDIT
Теперь я получил фактический файл excel, из которого я буду извлекать эти данные. Любые советы о том, как получить только поля "yearQtr" и HRTC поля с C# был бы весьма признателен
Edit
Только что обнаружил, что их машина, выполняющая это приложение, не будет иметь excel. Таким образом, файл, показанный выше, должен быть изменен в другой формат, прежде чем он будет прочитан в приложении(это будет обработано путем ручного сохранения файла из excel в формате csv или xml или любом другом формате. Поэтому я думаю, что мой вопрос заключается в том, как получить описанные выше данные из csv или xml
2 ответа:
Вы можете сделать это следующим образом:
public class MyClass { public List<string> columns; }
Затем в форме, вы можете сделать вид вверх, как это:
List<MyClass> myValues; public List<MyClass> LookUp(string value, int columnIndex) { return this.myValues.Where( input => input.columns[columnIndex] == value ).ToList(); }
В настоящее время я использую это архитектурное решение для удовлетворения своих потребностей в данных. Я создаю новую таблицу каждый раз, когда она мне нужна (как я уже сказал в вопросе, скорость не имеет значения). Таблица предназначена только для конкретного региона в таблице. Как вы можете сказать, я еще не разобрался в части извлечения данных Excel.
class Table { Dictionary<String, double> _regionTimeValues; String _region; public Table(String region) { _regionTimeValues = new Dictionary<string, double>(); _region = region; suckInValues(); } private void suckInValues() { //Go find the File, get the appropriate Values //for each value found } internal double locateRelevantValue(string yearQuarter) { double locatedValue = 0.0; _regionTimeValues.TryGetValue(yearQuarter,out locatedValue); return locatedValue; } }