繁体   English   中英

如何将重新排序数据库中的项目的 sql 查询转换为 linq?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM