gpt4 book ai didi

c# - linq 按月份名称和年份排序(MMM yyyy 字符串)

转载 作者:太空狗 更新时间:2023-10-30 01:08:14 25 4
gpt4 key购买 nike

我如何在 linq 中按月份名称和年份排序,它目前按字母顺序排序,这在显示报告时会导致问题

我正在寻找 2011 年 11 月、2011 年 12 月、2012 年 1 月、2012 年 2 月

我主要关心的是结果 MonthList,因为它是 monthlist1 和 monthlist2 之间的联合

感谢您的帮助和见解

var monthlist1 = data.
Select(x => new { wkdate = x.WKENDDATE }).
OrderBy(y => y.wkdate).
Select(m => new {
monthname = m.wkdate.ToString("MMM yyyy",
CultureInfo.CreateSpecificCulture("en-US"))
}).
Distinct().
ToList();

var monthlist2 =
data.Select(x => new { wkdate =
ExportHelper.getSplitEndDate(x.WKENDDATE).AddDays(1)})
.OrderBy(y => y.wkdate)
.Where(l => ExportHelper.isSplitWeek(l.wkdate.AddDays(-6), l.wkdate) == true)
.Select(m => new {
monthname = m.wkdate.ToString("MMM yyyy",
CultureInfo.CreateSpecificCulture("en-US"))
})
.Distinct()
.ToList();

var monthlist =
monthlist1.
Union(monthlist2).
Distinct().
OrderBy(m=> m.monthname).
ToList();

最佳答案

它按字母顺序排序,因为 wkdate 是一个 String 值而不是 DateTime。你需要先解析它:

var monthlist = monthlist1.Union(monthlist2)
.Distinct()
// monthname is a String in format MMM yyyy
.OrderBy(m => DateTime.Parse(m.monthname))
.ToList();

我假设由于您当前的 wkdate 值遵循 MMM yyyy 的格式(例如 Apr 2012),它们将 所有 正确解析。我知道这是一个大胆的假设。

您还必须将这些值重新格式化为 String 表示形式以表示您的最终结果。

关于c# - linq 按月份名称和年份排序(MMM yyyy 字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10141428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com