Каков хороший способ создать набор данных, который подключен

В настоящее время я пишу программу, которая принимает данные об упражнениях. Переменные

Упражнение - Пример) Жим лежа

Дата - Экс) 12.08.13

Повторения - Ex) 10

Вес - пр) 135

Наборы на весу - Ex) 3

Время отдыха - Ex) 120 (в секундах)

Масса тела на дату - Ех) 200

Я импортирую из файла CSV. Я проанализировал данные и получил их, чтобы получить класс, настроенный как таковой.

    Public Class WorkoutInformation
   {
   public string Exercise{get;set;}
   public List<DateTime> date; 
   public List<dynamic> sets {get;set;}
   public List<dynamic> reps {get; set;}
   public List<dynamic> weight {get;set;}
   public List<dynamic> restTime {get; set;}
   public List<dynamic> bodyWeight {get;set;}

}

Итак, вот моя проблема. Я обнаружил, что когда я рисую их, даты не сортируются, и я хотел бы, чтобы более ранние дни показывались первыми. Итак, я разбирал свои List<WorkoutInformation>. Но я обнаружил, что это оставляет меня уязвимым для потери того, какие даты соответствуют каким весам, или повторениям, или другой информации. Тогда мой вопрос заключается в том, как мне создать класс, в котором я могу получить доступ к информации, такой как список Ex) MyList.date[i], но когда я изменяю индекс MyList.date[i], все остальные части информации соответствующим образом индексируются вместе с ним?


person user2023068    schedule 29.01.2013    source источник
comment
Почему во многих ваших списках используется динамика? Кажется, что использование соответствующих типов было бы лучше   -  person David L    schedule 30.01.2013
comment
Я сделал это, потому что некоторые из входных данных могут быть не целыми, например, если кто-то делает набор из 10, но получает до 6, затем делает 10-секундные перерывы и заканчивает последние 4. Я учитываю это в том, как пользователь вводит свои данные в файл CSV. Таким образом, количество повторений точки данных будет не 10, а 6x4x10, что означает 6 повторений, 4 повторения, 10 секунд между ними. Или что-то близкое к этому.   -  person user2023068    schedule 30.01.2013
comment
Вы всегда должны знать ожидаемые типы ввода. Если они не целые, а строки, то проанализируйте их по пути. Это или сделайте их правильным типом данных. Вы просто причиняете себе ненужную боль, используя динамику, когда она вам не нужна.   -  person David L    schedule 30.01.2013


Ответы (1)


Лучшим дизайном может быть создание класса, который содержит один сеанс данных для вас:

public class WorkOutSession
{
    public string Exercise { get; set; }
    public DateTime Date { get; set; }
    public int Sets { get; set; }
    public int Reps { get; set; }
    public int Weight { get; set; }
    public int RestTime { get; set; }
    public int BodyWeight { get; set; }
}

public class WorkOutInformation
{
    public List<WorkOutSession> Sessions { get; set; }
}

Благодаря этому дизайну вы можете сортировать список сеансов по дате, и все данные для сеанса останутся связанными:

var sessionsByDate = Sessions.OrderBy(s => s.Date);
person itsme86    schedule 29.01.2013