我有一个查询返回10000个用作地图上绘图点的记录。为了减少负载并提高应用速度,我们试图实现逻辑基本相当于Level of Detail的操作。基本上,当缩小时,显示50%的点数。放大时,显示100%的点数。用LINQ返回每隔一个记录
这最终是什么,我需要最终的SQL看起来像:
SELECT *
FROM
(SELECT
[t0].[RecordName],
[t0].[LastMaintenanceDate]
,Row_Number() OVER (ORDER BY [t0].Ticker) as RowNumber
FROM
[dbo].[TableName] AS [t0]
)as [t1]
WHERE RowNumber % 2 = 0
在LINQ我可以使用.Skip和。取得到ROW_NUMBER()在部分(example here),但是这样做的时候,Where标准生成使用'between'而不是'where RowNumber%2 = 0',我需要。
我是否正确接近?为了获得我们在这里寻找的全部性能收益,这种排除实际上需要发生在SQL服务器上。
这是一个非常有趣的问题,不幸的是我不知道使用纯LINQ to SQL的答案。我可以建议的唯一的事情是,LINQ to SQL *支持即席[原始SQL查询](http://msdn.microsoft.com/zh-cn/library/bb399403.aspx)。你的问题可能是这样做的有效案例。 – Randolpho 2009-10-07 20:23:50