產品列表我的產品列表:使用LINQ to更新排名
IQueryable<Product> list = _ProductRepository.GetAll();
列Product.Clicks對應於時間的產品已被瀏覽次數。
我想更新的產品清單,並使用排序,如本更新列Product.Rank:
SELECT
ProductId,
Name,
RANK() OVER (ORDER BY Clicks DESC) [Rank],
Clicks
FROM
Product
WHERE
Clicks > 0
什麼是使用LINQ做到這一點的最有效方法是什麼?有沒有辦法直接更新,而不是查詢產品並列舉它們?這將作爲一個批處理作業每週運行。
更新: 看來很多人都認爲SQL SP批處理作業是最好的方法。積分轉到建議這樣的查詢的人。
UPDATE:答案如下:
CREATE PROCEDURE UpdateRank
AS
BEGIN
SET NOCOUNT ON;
WITH RankValues AS
(SELECT [ProductId], [Clicks], [Rank],
RANK() OVER (ORDER BY [Clicks] DESC) AS [NewRank]
FROM [Product])
UPDATE [RankValues]
SET [Rank] = [NewRank]
WHERE Clicks > 0
END
GO
我按照建議實施它。所以這些要點轉到CResults。 – Junto 2010-02-23 08:49:05