Правильный способ поиска значения из таблицы и заполнения его данными


Мой текущий проект-это в основном преобразование электронной таблицы excel в приложение windows. Я наткнулся на раздел рабочего листа, используя таблицу и vlookups. Предположим, что таблица выглядит так (точно так же, только каждый квартал с дополнительной строкой, добавленной снизу):

Введите описание изображения здесь

Я хочу имитировать vlookups в C#, и я могу придумать несколько различных способов, однако я ищу "лучший" способ. Под "лучшим" я имею в виду самый простой код и большинство ремонтопригодный, я не имею в виду скорость, если он работает менее чем за 10 секунд, это достаточно хорошо. это происходит в методе, который имеет имя региона и Yr/Qrt, передаваемые в виде строк. Используя их, какие структуры данных я должен использовать для хранения табличных данных и как я могу сделать это в наименьшем количестве кода?

EDIT

Теперь я получил фактический файл excel, из которого я буду извлекать эти данные. Любые советы о том, как получить только поля "yearQtr" и HRTC поля с C# был бы весьма признателен

Edit

Только что обнаружил, что их машина, выполняющая это приложение, не будет иметь excel. Таким образом, файл, показанный выше, должен быть изменен в другой формат, прежде чем он будет прочитан в приложении(это будет обработано путем ручного сохранения файла из excel в формате csv или xml или любом другом формате. Поэтому я думаю, что мой вопрос заключается в том, как получить описанные выше данные из csv или xml

2 6

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;

        }
    }