Как я могу преобразовать этот sql запрос, который переупорядочивает элементы в базе данных в linq? - PullRequest
0 голосов
/ 27 февраля 2020

В настоящее время у меня есть таблица, в которой у элемента новый порядок на основе столбца, по которому он сортируется. Цель оператора sql - переупорядочить таблицу на основе этого столбца сортировки. Команда SQL в настоящее время работает, но у меня много жестко закодированных строк, и я надеюсь преобразовать ее в linq, чтобы ее было проще тестировать. sql у меня ниже:

sql = string.Format(CultureInfo.InvariantCulture, "UPDATE x SET
x.[{1}] = x.[RowNum] FROM (SELECT [{1}], ROW_NUMBER() OVER (ORDER BY
t.[{1}] ASC, t.[Modified] DESC) AS RowNum FROM {0} t INNER JOIN
tableTwo i ON t.TableTwoId = i.Id INNER JOIN {4} p ON t.{4}Id
= p.Id WHERE i.{2} = {3} and {3} <> '' ", tableName, sortColumn, tableTwoColumn, "{0}", tableThreeName);

Я знаком с basi c Linq, но я не уверен, как преобразовать такие вещи, как ROW_NUMBER () и OVER в linq. Я изменил имена таблиц для имен образцов, на случай, если они не идеальны. Любая помощь будет оценена!

1 Ответ

2 голосов
/ 27 февраля 2020

Linq для запросов , а не обновлений . Возможно, вы могли бы использовать EF или какую-либо другую среду для обновления данных, но, честно говоря, raw SQL лучше всего подходит для массового обновления.

Я бы сказал, что имеется столбец «sort», который основан на существующих данных (и, следовательно, нужно периодически обновлять) кажется лишним. Почему бы просто не упорядочить данные по этому столбцу в ваших запросах select?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...