0

这是我的代码:

var items = tableInDatabase.All("WHERE [Order] > " + order);
foreach (var i in items.ToArray())
{
    i.Order = 7;
}
tableInDatabase.Save(items.ToArray());

但是,当断点到达最后一行时(在 foreach 循环之后),项目的每个元素的顺序都与之前相同(不是 7)。为什么会这样?虽然仍在循环中,但我的订单数为 7。

我正在使用 Massive,这是其官方页面中的示例:

var table = new Products();
var drinks = table.All("WHERE CategoryID = 8");
foreach(var item in drinks.ToArray()){
    item.CategoryID = 12;
}
table.Save(drinks.ToArray());

我也试过:

foreach (var i in items.ToArray())
{
    tableInDatabase.Update(i, i.Id);
}

没别的了。

返回类型 od tableInDatabase 是类 TableInDatabase。这是定义:

public TableInDatabase() : base(connectionString, "System.Data.SqlClient", "TableInDatabase", "Id") { }
4

2 回答 2

3

使用此代码:

var items = tableInDatabase.All("WHERE [Order] > " + order);
var array = items.ToArray();
foreach (var i in array)
{
    i.Order = 7;
}
tableInDatabase.Save(array);
于 2012-05-25T11:06:56.763 回答
0

ToArray()如Romil所说,创建一个新副本,在您的情况下,由于您使用的是Massive,您可能可以按照亚当所说的做,但是该选项会创建两个变量。您可以尝试以下方法。

var items = tableInDatabase.All("WHERE [Order] > " + order).ToArray();
foreach (var i in items)
{
    i.Order = 7;
}
tableInDatabase.Save(items);

这是 Massive 示例的一个已知问题,已在此处报告

于 2012-05-25T11:13:12.050 回答