我如何按照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();
Run Code Online (Sandbox Code Playgroud)
它按字母顺序排序,因为它wkdate是一个String值,而不是一个DateTime.你需要先解析它:
var monthlist = monthlist1.Union(monthlist2)
.Distinct()
// monthname is a String in format MMM yyyy
.OrderBy(m => DateTime.Parse(m.monthname))
.ToList();
Run Code Online (Sandbox Code Playgroud)
我假设,因为你的当前wkdate值遵循的格式MMM yyyy(例如Apr 2012),他们将所有的分析正确.我知道,这是一个大胆的假设.
您还必须将值格式化为String表示最终结果.
| 归档时间: |
|
| 查看次数: |
4148 次 |
| 最近记录: |