自定义排序列表
问题描述:
我有一个文本文件,我解析并将解析结果加载到集合中。我已完成解析并将结果加载到集合对象中。自定义排序列表
public class Results
{
List<Node> nodes = new List<Node>();
}
public class Node
{
public int id {get;set;}
public DateTime initiationDateTime {get;set;}
}
下一步是通过每个列表项进行迭代,并且如果时间戳差值是从先前的最小日期/时间超过30分钟,然后它将被存储为用户选择。例如从以下记录集中,用户将以checboxes的形式查看以下选项。我想弄清楚的是如何形成用户选择列表。一旦我向用户显示用户选择列表,他们将重新发布页面及其选择,并根据日期范围我将在选定的日期范围内处理记录。
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
- 将新分钟日期推入收藏集
- convert your collection在回发时,该值将是最短日期(而不是范围)。你知道给定一个最短日期,你总是可以找到范围:只需加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...
可能重复:[列表的自定义排序](http://*.com/q/10049466/299327) –