【问题标题】:What is a good method to create a set of data that is "connected"什么是创建一组“连接”的数据的好方法
【发布时间】:2013-01-29 20:30:49
【问题描述】:

我目前正在编写一个接收有关锻炼数据的程序。变量是

锻炼 - 例如)卧推

日期 - 前)08/12/13

代表 - 前)10

重量 - 例如)135

设置重量 - 例如)3

休息时间 - 例如)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&lt;WorkoutInformation&gt;。但我发现这让我很容易丢失哪些日期与哪些重量、代表或其他信息相关。然后我的问题是如何创建一个类,我可以在其中访问信息,例如列表 Ex) MyList.date[i] 但是当我更改 MyList.date[i] 的索引时,所有其他信息都被适当地索引了?

【问题讨论】:

  • 为什么您的许多列表都使用动态?似乎使用适当的类型会更好
  • 我已经这样做了,因为某些输入可能不是 int 的,例如,如果有人正在做一组 10 个但得到 6 个然后需要 10 秒的休息时间并完成最后 4 个。我正在考虑用户如何将他们的数据输入到 CSV 文件中。因此,数据点的重复次数不会是 10,而是 6x4x10,这意味着 6 次重复,4 次重复,中间间隔 10 秒。或类似的东西。
  • 您应该始终了解您预期的输入类型。如果它们不是整数而是字符串,则在输入的过程中对其进行解析。或者使它们成为正确的数据类型。当你不需要动态时,你只是在给自己造成不必要的痛苦

标签: c# list class csv data-collection


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2013-01-28
    • 1970-01-01
    • 2011-03-31
    • 2017-04-13
    • 2011-01-18
    • 1970-01-01
    相关资源
    最近更新 更多