自分が書いた関数の問題に気づきました。問題に気づきましたが、「修正」は状況を悪化させるだけです。
この関数はデータベースに接続してselectクエリを実行し、任意の行をとして返しますList<List<string>>
。意図した動作ではList<string>
、すべての行に対して1が返され、すべての行に複数の列があるため、リストインデックスを使用してそれらにアクセスできます。
try
{
///Open connection before we can read
dataConnection.Open();
///Prepare to read
reader = dataCommand.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
myTestData.Clear();
for (int i = 0; i < howManyColumns; i++)
{
///Add columns to myTestData list
myTestData.Add(reader.GetValue(i).ToString());
}
///Add myTestData list to dataRows
dataRows.Add(myTestData);
}
}
catch (SqlException exSql)
{
Program.displayExError(exSql, true);
}
問題は次のとおりです。
myTestData.Clear();
リストをクリアしようとしたので、次にリストのリストに1つのリストを追加すると、要素がなくなり、すべての行が同じリストに追加されるのを避けますが、そうすると、myTestData.Clear();
リストの内容が消去され、リストのリストが消去されます。すべての内容も失います。最初のリストに追加せずにデータを保持するためのアイデアはありますか?
PS:私が行った修正myTestData.Clear();
は、問題の原因となる追加でしたが、それを削除すると、すべての行が最初のリストに追加され、使用されなくなります。問題が不明な場合は、明確にするために私に知らせてください
Thxみんな!