数组中的奇怪值 - 在我更改它们之后它们保持不变

时间:2012-05-25 10:58:03

标签: c# database

这是我的代码:

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") { }

2 个答案:

答案 0 :(得分:3)

使用此代码:

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

答案 1 :(得分:0)

ToArray()创建一个Romil所说的新副本。在你使用Massive的情况下,你可以做Adam所说的,但该选项会创建两个变量。您可以尝试以下方法。

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

这是Massive示例的已知问题,已报告here