C# 如何将这个对数据库中的项进行重新排序的sql查询转换为linq?

C# 如何将这个对数据库中的项进行重新排序的sql查询转换为linq?,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,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}] A

我目前有一个表,其中一个项目根据其排序依据的列具有新的顺序。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,但我不知道如何将行数和OVER转换为Linq。我更改了样本名称的表名,以防不完美。任何帮助都将不胜感激

Linq用于查询,而不是更新。您可以使用EF或其他框架来更新数据,但老实说,原始SQL最适合批量更新

我想说,有一个基于现有数据的排序列,因此需要定期更新,这似乎是多余的。为什么不在select查询中按该列对数据进行排序?

Linq用于查询,而不是更新。您可以使用EF或其他框架来更新数据,但老实说,原始SQL最适合批量更新


我想说,有一个基于现有数据的排序列,因此需要定期更新,这似乎是多余的。为什么不在select查询中按该列对数据排序?

我通常会得到一个列名称列表:string[]columnNames=dt.columns.Cast.Selectx=>x.ColumnName.ToArray。然后我可以查找列名并获取索引。int index=columnNames.IndexOfColumnA;我通常会得到一个列名称列表:string[]columnNames=dt.columns.Cast.Selectx=>x.ColumnName.ToArray。然后我可以查找列名并获取索引。int index=columnNames.IndexOfColumnA;应用程序的遗留部分要求它在那里。我同意基于现有数据的排序列绝对不是理想的。这是LINQ主要用于查询的一个优点。我可以使用实体框架来尝试本文中概述的内容。应用程序的遗留部分要求它在那里。我同意基于现有数据的排序列绝对不是理想的。这是LINQ主要用于查询的一个优点。我可以使用实体框架来尝试本文中概述的内容。