[英]How to write linq to get most recent incoming event records
var events = context.Events .........
活動有'DueDate'屬性(日期時間)
我想選擇最近的5條記錄,如何編寫這樣的查詢? 謝謝
如果您對最接近當天的活動感興趣,您可以這樣做:
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 to Entities DateTime
操作不是直接支持,但如果您使用SQL Server, DateDiff之類的東西應該可以工作(未經測試,您將不得不自己嘗試):
DateTime today = DateTime.Now;
var events = context.Events
.Where(e => e.DueDate >= today)
.OrderBy(e => System.Data.Objects.SqlClient.SqlFunctions.DateDiff("d", e.DueDate, today))
.Take(5)
.ToList();
如果這不起作用,您可以始終先獲取數據,然后使用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();
寫它的一種方法:
var events = context.Events.OrderByDescending(e=>e.DueDate).Take(5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.