gpt4 book ai didi

c# - 使用 LINQ 更新具有排名的产品列表

转载 作者:行者123 更新时间:2023-11-30 22:47:14 25 4
gpt4 key购买 nike

我有一个产品列表:

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 批处理作业是最好的方法。提出此类查询的人将获得积分。

更新:回答如下:

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

最佳答案

我只是刚刚接触 LINQ,所以很抱歉,但为什么要涉及 LINQ?

如果我正在研究这个问题,最有效的方法是将其包装在一个存储过程中,并让服务器作为一项自动化工作为您完成。

关于c# - 使用 LINQ 更新具有排名的产品列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2306092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com