[英]How can I convert this sql query that reorders items in a database to linq?
我目前有一个表,其中一个项目有一个基于它被排序的列的新订单。 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);
我熟悉基本的 Linq,但我不确定如何将 ROW_NUMBER() 和 OVER 之类的内容转换为 linq。 我更改了样本名称的表名,以防它不完美。 任何帮助,将不胜感激!
Linq 用于查询,而不是更新。 您可以使用 EF 或其他一些框架来更新数据,但老实说,原始 SQL 最适合批量更新。
我会说拥有一个基于现有数据的“排序”列(因此需要定期更新)似乎是多余的。 为什么不在选择查询中按该列对数据进行排序?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.