У меня есть список продуктов:Использование LINQ для обновления списка продуктов с рангом
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, чтобы сделать это? Есть ли способ сделать прямое обновление, а не запрашивать продукты и перечислять их? Это будет выполняться как пакетное задание на еженедельной основе.
UPDATE: Похоже, что многие люди предположили, что пакетное задание 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