我的问题是,如何从这个列表中取出
Periods = new List<TimePeriod>
{
new TimePeriod
{
Id = "Today",
Start = DateTime.Now.Date,
// date without seconds
End = DateTime.Now.Date.AddDays(1).AddTicks(-1) // last before next day
},
new TimePeriod
{
Id = "Yesterday",
Start = DateTime.Now.Date.AddDays(-1),
End = DateTime.Now.Date.AddTicks(-1),
},
new TimePeriod
{
Id = "CurrentWeek",
Start = DateTime.Now.FirstDayOfWeek(),
End = DateTime.Now.LastDayOfWeek().AddDays(1).AddTicks(-1)
},
new TimePeriod
{
Id = "LastWeek",
Start = DateTime.Now.AddDays(-7).FirstDayOfWeek(),
End = DateTime.Now.AddDays(-7).LastDayOfWeek().AddDays(1).AddTicks(-1)
},
只有Ids(今天,昨天,CurrentWeek,LastWeek)并将它们放在其他列表中,所以我可以在我的函数中对它们进行排序
public void FillDefaultPeriods(int offsetInMinutes,List<string> ordering)
带有订购参数(例如我将在以后添加参数&#34;昨天&#34;,&#34;今天&#34;,&#34; LastWeek&#34;,&#34; CurrentWeek&#34; )。订单将与期间清单
中的订单不同答案 0 :(得分:1)
嗯,目前尚不清楚你发布的FillDefaultPeriods
与你宣布的目标相关的内容&#34;那些ID(&#34;今天&#34;,&#34;昨天&#34; ..在其他一些列表中)然后对它们进行排序&#34;,但这个目标很容易通过以下方式实现:
var list = Periods.Select(p => p.Id).ToList();
list.Sort();
更新
这将使用defult string comparer对列表进行排序。如果您需要一些自定义比较选项 - 您可以使用覆盖List.Sort
方法将Comparison<T>
作为参数并编写您自己的比较规则
var list = Periods.Select(p => p.Id).ToList();
list.Sort(MyCustomComparison);
....
private static int MyCustomComparison(string x, string y)
{
... your comparing logic here.
}
在MyCustomComparison
方法中,您必须编写比较逻辑。如果x
为&#34;较少&#34;此方法应返回负值。比你的y
逻辑,如果它们是等于零,则为x
&#34;更大&#34;比y
。
答案 1 :(得分:0)
如果您希望按特定顺序处理句点本身而不仅仅对其ID进行排序,则可以使用此方法:
var orderedPeriods = Periods.OrderBy(p => p.Id);
这将在id上使用默认字符串比较。当然,如果你想要更复杂的东西,你可以提供另一个关键的派生功能。