我希望做這樣的事情:可能使用LINQ創建最近12個月的列表?
List<DateTime> last12 = new List<DateTime>(12);
last12.ForEach(t=>t.AddMonths(-{t.Index}));
但還沒有完全想通了如何做{t.Index}
部分...
這種事可能嗎?
我希望做這樣的事情:可能使用LINQ創建最近12個月的列表?
List<DateTime> last12 = new List<DateTime>(12);
last12.ForEach(t=>t.AddMonths(-{t.Index}));
但還沒有完全想通了如何做{t.Index}
部分...
這種事可能嗎?
DateTime start = DateTime.Now;
List<DateTime> last12 = (from r in Enumerable.Range(1,12) select start.AddMonths(0-r)).ToList();
目前尚不清楚您是否希望當前的月份不計算在內,但這會指向您正確的方向,您可以根據需要進行相應編輯。
DateTime now = DateTime.Now;
DateTime currentMonth = new DateTime(now.Year, now.Month, 1);
var lastTwelveMonths =
Enumerable.Range(0, 12)
.Select(i => -i)
.Select(monthsToAdd => currentMonth.AddMonths(monthsToAdd))
.ToList();
Foreach在技術上不是Linq方法。它作爲List類中的具體方法存在,但不在任何接口中。
var now = DateTime.Now;
var months = Enumerable.Range(1, 12).Select(n => now.AddMonths(-n));
foreach (var month in months)
{
Console.WriteLine(month.ToString("MMMM"));
}
可生產(丹麥)
november
oktober
september
august
juli
juni
maj
april
marts
februar
januar
december
你的代碼有一個令人討厭的bug,除非你非常小心,否則它將不會在你的單元測試中出現,但最終會殺死你。您可能會遇到'DateTime.Now'問題。想象一下,當這個語句開始執行時,它是'new DateTime(2010,12,31,23,59,59,999)',並且執行需要超過一毫秒的時間。 – jason 2010-12-10 21:13:52
@Jason如此真實,更新了代碼以製作DateTime.Now的本地副本:) – 2010-12-10 21:16:33
我喜歡它,非常漂亮。 – 2010-12-10 21:24:10