我需要運行一個LINQ查詢,它將返回3行(當前記錄,上一條記錄和下一條相對於當前記錄的記錄,ProductID是我自動生成的標識列。一個聯盟LINQ聲明,但我不知道是否有更好的或完成相同的任務更有效的方式這是正確的方式來選擇給定當前記錄的ID的前一個和下一個記錄?
這裏是我得到:
var ProductID = 10;
var Results = (from p in DB.Products
where p.ProductID == ProductID - 1 //Previous record.
select new Product
{
ProductID = p.ProductID,
ProductTitle = p.ProductTitle,
Views = p.Views,
}).Union(from p in DB.Products
where p.ProductID == ProductID //Current record
select new Product
{
ProductID = p.ProductID,
ProductTitle = p.ProductTitle,
Views = p.Views,
}).Union(from p in DB.Products
where p.ProductID == ProductID + 1 //Next record.
select new Product
{
ProductID = p.ProductID,
ProductTitle = p.ProductTitle,
Views = p.Views,
});
這應該返回3行的產品ID 9 ,ProductID 10,ProductID 11.謝謝!
我不明白。首先,您在ID列上放置一個where子句(僅留下一條記錄),然後您可以訂購併跳過並取。這仍然只會讓你目前...我錯過了什麼? –
這是正確的,因爲我們不能只是假設ID將在範圍內。這是最佳做法。 –