我从数据库中获取不同的月份,但月份值以月份和年份的形式出现。即, 1月15日,2月15日。如何以月和年的升序排列? 现在我得到的结果是: 4月15日2月15日 - 1月15日 - 3月15日 - 15日。但我希望得到如下结果: 1月15日 - 2月15日 - 3月15日 - 4月15日。
var months = ((from mnths in context.Table
orderby mnths.Month
select mnths.Month).Distinct()).ToList();
return months;
感谢。
答案 0 :(得分:2)
您可以像这样使用DateTime.TryParseExact
:
var months = ((from mnths in context.Table
orderby mnths.Month
select mnths.Month).Distinct()).ToList().OrderBy(m =>
{
DateTime month;
return DateTime.TryParseExact(m, new[] {"MMM-yy"}, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out month)
? month
: DateTime.MinValue;
}).ToList();
您需要在ToList
之前致电OrderBy
,以便执行原始查询,并获得IEnumerable<string>
而不是IQueryable
。
答案 1 :(得分:0)
只需使用.NET排序方法即可。 首先从DB获取所有日期
var dates = ((from dts in context.Table
select dts).Distinct().ToList();
return dates;
然后做
dates.Sort();
dates.Reverse();
你会得到你想要的结果。 (并在Db中存储日期时间,类型为datetime而非nvarchar或其他)。