我有一个文本文件,我解析并将解析的结果加载到集合中。我已经完成了解析并将结果加载到集合对象中。
public class Results
{
List<Node> nodes = new List<Node>();
}
public class Node
{
public int id {get;set;}
public DateTime initiationDateTime {get;set;}
}
下一步是循环访问每个列表项,如果时间戳差异与上一个最小日期/时间相差 30 分钟以上,则它将被存储为用户选择。 例如,从以下记录集中,用户将以Checbox的形式查看以下选项。 我试图弄清楚的只是如何形成用户选择列表。一旦我向用户显示用户选择列表,他们将重新发布包含其选择的页面,并根据日期范围处理所选日期范围内的记录。
User Choices:
1/12/2012 10:09 - 1/12/2012 10:49
1/12/2012 13:25 - 1/12/2012 13:26
1/12/2012 15:30
Parsed List:
ID Test Initiation InitiationChoice CompletionChoice
1 1/12/2012 10:09 Yes
2 1/12/2012 10:09
3 1/12/2012 10:09
4 1/12/2012 10:09
5 1/12/2012 10:09
6 1/12/2012 10:09
7 1/12/2012 10:48
8 1/12/2012 10:48
9 1/12/2012 10:49
10 1/12/2012 10:49
11 1/12/2012 10:49
12 1/12/2012 10:49 Yes
13 1/12/2012 13:25 Yes
14 1/12/2012 13:25
15 1/12/2012 13:25
16 1/12/2012 13:25
17 1/12/2012 13:26
18 1/12/2012 13:26 Yes
19 1/12/2012 15:30 Yes
以下是我尝试创建用户选择,希望对此提出建议
//First Minimum Date to start as i have already sorted this list based on date.
minimumDateTime = lf.Nodes.ElementAt(0).InitiationDate;
foreach (Node rb in lf.Nodes)
{
TimeSpan intervalMinutes = rb.InitiationDate.Subtract(minimumDateTime);
UserConfirmationErrors confirmationRun = new UserConfirmationErrors();
if (intervalMinutes.TotalMinutes >= 30)
{
//New Minimum Date/Time
minimumDateTime = rb.InitiationDate;
}
}
我会这样做:
- 创建集合,例如
List<DateTime> minDates
- 将新的最小日期推送到集合中
- 将您的收藏转换为
List<SelectListItem>
- 在回发时,该值将是最小日期(而不是范围)。 您知道,给定一个最小日期,您总能找到范围:只需添加 30 分钟。
因此,我的伪示例如下所示:
minimumDateTime = DateTime.Min; // don't force to first record.. let loop do it
var minDates = new List<DateTime>();
foreach (Node rb in lf.Nodes)
{
TimeSpan intervalMinutes = rb.InitiationDate.Subtract(minimumDateTime);
UserConfirmationErrors confirmationRun = new UserConfirmationErrors();
if (intervalMinutes.TotalMinutes >= 30)
{
//New Minimum Date/Time
minimumDateTime = rb.InitiationDate;
minDates.Add(minimumDateTime); // add to new collection
}
}
// now loop your minDates to create your select list
var items = new List<SelectListItem>();
foreach(var minDate in minDates)
{
var item = new SelectListItem() { Value = minDate.ToString(), Text = String.Format("{0} - {1}", minDate, minDate.AddMinutes(30) };
items.add(items);
}
// now items is your collection that you can bind your select list to...