最近3个月

本文关键字:3个月 最近 | 更新日期: 2023-09-27 18:03:01

在一个存储过程中有这样一行:

DATENAME(MONTH, tblReg.StartDate) as [Month],

现在我想把这行转换成linq

var b = sd.tblReg;
foreach (var c in b)
{
    res += "'" + c.StartDate + "',";
}
res = res.Substring(0, res.Length - 1);
res += "]";

并想获得最后3个月…也就是说,当前月份是8月,所以如果当前月份是1月,那么8月是最后3个月,那么12月是12月,11月是10月。像这样的

['May' ,'June','July','Aug']

最近3个月

您可以这样做,使用Linq查找以前的3月份。DateTimeFormat.GetMonthName将帮助您获得月份名称。

int month = ..; // given a month
var result = Enumerable
    .Range(-2,18)                  // Compute +/- 3 months for original 12 months.
    .TakeWhile(x=>x <=month)       // Take months until the current month
    .Reverse()                     // Reverse the order as we need backword months.
    .Take(4)                       // Take top 4 months (including current month)
    .Select(x=>CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x<=0?x+12: x==12? 12 : (x+12)%12))

检查Demo