【发布时间】:2020-01-08 00:25:58
【问题描述】:
我的数据库有一个Task 表和一个Sequence 列。 Sequence 列指定任务的顺序。
在某些情况下,我需要更改顺序。所以我会使用这样的东西:
var tasks = (dbContext.Tasks
.Where(t => t.UserId == userId)).ToList();
for (int i = 0; i < tasks.Count; i++)
{
// Set new sequence
tasks[i].Sequence = i;
}
dbContext.SaveChanges();
这似乎相当低效,必须检索集合中每个Task 的每一列。
有没有更有效的方法来做到这一点?
注意:请不要纠结于我只是在上面的代码中将Sequence 设置为i。真实代码将具有指示正确值的数据接收数据。但是如果我可以优化上面的代码,我就可以根据我的最终需求进行调整。
【问题讨论】:
-
抱歉,忘记了我的单票关闭将关闭问题。如果我弄错了,请告诉我!
-
@RufusL:针对该问题显示的技术会在内存中创建数据。我的代码需要更新
Sequence列。这意味着我首先需要阅读该专栏。所以建议的答案并没有真正解决我的问题。 -
@stuartd:如果您仔细查看我的代码,我将更新
Sequence列。我没有对结果进行排序。 -
对,您可以在查询中添加
.Select(t => t.Sequence)以仅提取该列,然后使用这些结果更新数据库。但我不介意重新提出问题。
标签: c# asp.net entity-framework entity-framework-core