产品列表我的产品列表:使用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