Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对从当前月份开始的月份名称列表进行排序_C#_Date_Sorting_Datetime - Fatal编程技术网

C# 对从当前月份开始的月份名称列表进行排序

C# 对从当前月份开始的月份名称列表进行排序,c#,date,sorting,datetime,C#,Date,Sorting,Datetime,可能重复: 我需要创建一个组合框,列出一年中的月份,但需要从 当前月份,然后按月份顺序排列其余月份,例如: 十月 十一月 十二月 一月 二月 三月 等等 数据源是数据库中的月份列表,根据月份编号(即一月=1等)对其进行编号,然后进行操作以给出日期时间 如何用C#对列表进行排序,以便获得所需的顺序 TIA.使用 List List=新列表(); DateTimeFormatInfo dtFI=新的DateTimeFormatInfo(); DateTime currentDate=DateTim

可能重复:

我需要创建一个组合框,列出一年中的月份,但需要从 当前月份,然后按月份顺序排列其余月份,例如:

十月
十一月
十二月
一月
二月
三月
等等

数据源是数据库中的月份列表,根据月份编号(即一月=1等)对其进行编号,然后进行操作以给出日期时间

如何用C#对列表进行排序,以便获得所需的顺序

TIA.

使用

List List=新列表();
DateTimeFormatInfo dtFI=新的DateTimeFormatInfo();
DateTime currentDate=DateTime.Now;
DateTime nextyearDate=currentDate.AddYears(1.AddDays(-1);
while(currentDate

这将创建一个新的月份列表,从当前月份开始

LINQ对此的另一种看法:

// month name source, use what you prefer
var monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
var sorted = Enumerable.Range(1, 12).Zip(monthNames, Tuple.Create)
            .OrderBy(t => (t.Item1 - DateTime.Today.Month + 12) % 12)
            .Select(t => t.Item2)
            .ToArray();

您可以使用
List monthNames=DateTimeFormatInfo.CurrentInfo.monthNames.ToList()以C#形式获取月份列表。它会得到一个包含13个元素的
列表(末尾是一个空的月名,但您始终可以删除最后一个元素
monthNames.RemoveAt(monthNames.Count-1);

要重新排列此列表,您可以使用
DateTime.Now.month.ToString(“00”);
获取当前月号索引,并重新构造列表
newMonthNames=monthNames.GetRange(index,12-index).AddRange(monthNames.GetRange(0,index);

有很多方法可以做到这一点,就像其他方法一样。

List<string> list = new List<string>();
DateTimeFormatInfo dtFI = new DateTimeFormatInfo();
DateTime currentDate = DateTime.Now;
DateTime nextyearDate = currentDate.AddYears(1).AddDays(-1);
while (currentDate < nextyearDate)
{
    list.Add(dtFI.GetMonthName(currentDate.Month));
    currentDate = currentDate.AddMonths(1);
}
// month name source, use what you prefer
var monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
var sorted = Enumerable.Range(1, 12).Zip(monthNames, Tuple.Create)
            .OrderBy(t => (t.Item1 - DateTime.Today.Month + 12) % 12)
            .Select(t => t.Item2)
            .ToArray();