1
A
回答
3
如果你有興趣在最接近天的活動,你可以這樣做:
DateTime today = DateTime.Now;
var events = context.Events
.OrderBy(e => Math.Abs((today - e.DueDate).Days))
.Take(5)
.ToList();
這需要那些事件離今天(過去或未來)最少的天數。
如果你想那是最近的,但只有在未來的事件,你可以這樣做:
DateTime today = DateTime.Now;
var events = context.Events
.Where(e => e.DueDate >= today)
.OrderBy(e => (e.DueDate - today).Days)
.Take(5)
.ToList();
編輯:
如果使用LINQ到實體不直接支持DateTime
操作,但如果你使用的SQL服務器像DateDiff應該工作(未經測試,你將不得不嘗試自己):
如果這不起作用,你總是可以首先獲取你的數據,然後用LINQ過濾對象,這有附加的好處,你沒有把自己綁定到SQL Server - 但顯然它不是非常有效的:
DateTime today = DateTime.Now;
var futureEvents = context.Events
.Where(e => e.DueDate >= today);
.ToList();
var filteredEvent = futureEvents
.OrderBy(e => (e.DueDate - today).Days)
.Take(5)
.ToList();
1
一種方式來寫它:
var events = context.Events.OrderByDescending(e=>e.DueDate).Take(5);
+0
這會不會選擇前5名有'最大'Duedate的recoreds? – user469652 2011-01-22 05:33:19
DueDate是否反映記錄的「最近」? – 2011-01-22 05:35:19
不〜這只是一個到期日期。 – user469652 2011-01-22 05:39:29