0

これが私のコードです:

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

ただし、ブレークポイントが (foreach ループの後) 最後の行に到達すると、items のすべての要素の順序が以前と同じになります (7 ではありません)。なぜこうなった?まだループ中ですが、i の次数は 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);
}

そして何もありません。

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を使用しているので、おそらく Adam が言ったことを実行できますが、そのオプションは 2 つの変数を作成します。以下を試すことができます。

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

これは大規模な例の既知の問題であり、ここで報告されています

于 2012-05-25T11:13:12.050 に答える