我需要运行一个 LINQ 查询,它将返回 3 行(当前记录、上一条记录和相对于当前记录的下一条记录。ProductID 是我自动生成的标识列。
目前我正在使用 Union LINQ 语句执行此操作,但我不确定是否有更好或更有效的方法来完成相同的任务。
这是我得到的:
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,
});
这应该为 ProductID 9、ProductID 10、ProductID 11 返回 3 行。谢谢!