Possible Duplicate:
Collection was modified; enumeration operation may not executeसी # संग्रह संशोधित किया गया था; गणन किए गए कार्य पूरे नहीं हो सकता है
नमस्ते,
मैं एक परियोजना आकलन कार्यक्रम बनाने के हूँ और कर रहा हूँ निम्न त्रुटि हो रही है: सी # संग्रह संशोधित किया गया था; गणना ऑपरेशन निष्पादित नहीं हो सकता है।
यह इस का उपयोग कर से संबंधित है: मैं initally इस के साथ विश्व स्तर पर diciontary घोषित:
private void getFirstEstimation()
{
List<int> array = new List<int>();
string strConnection = ConfigurationSettings.AppSettings["ConnectionString"];
MySqlConnection connection = new MySqlConnection(strConnection);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader reader;
command.CommandText = "SELECT idprojects FROM `test`.`projects` WHERE application_layers = " + applicationTiers;
connection.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
array.Add(Convert.ToInt32(reader["idprojects"].ToString()));
}
foreach (int i in array)
{
rankings[i] = 15;
}
connection.Close();
}
मैं एक के लिए इसे कहते:
Dictionary<int, int> rankings = new Dictionary<int, int>();
अगला विधि इस शब्दकोश युक्त निम्नलिखित करता है दूसरी बार यहां:
private void getSecondEstimation()
{
Dictionary<int, string> sqltext = new Dictionary<int, string>();
Dictionary<int, int> valueForSql = new Dictionary<int, int>();
Dictionary<int, int> weightings = new Dictionary<int, int>();
sqltext.Add(1, "project_type");
valueForSql.Add(1, projectType);
weightings.Add(1, 10);
sqltext.Add(2, "application_domain");
valueForSql.Add(2, applicationDomain);
weightings.Add(2, 8);
sqltext.Add(3, "organisation_size");
valueForSql.Add(3, organizationSize);
weightings.Add(3, 8);
sqltext.Add(4, "no_of_locations");
valueForSql.Add(4, noOfLocations);
weightings.Add(4, 7);
sqltext.Add(5, "development_process");
valueForSql.Add(5, developmentProcess);
weightings.Add(5, 6);
sqltext.Add(6, "rules_engine");
valueForSql.Add(6, rulesEngine);
weightings.Add(6, 5);
sqltext.Add(7, "middleware");
valueForSql.Add(7, middleware);
weightings.Add(7, 4);
sqltext.Add(8, "location_of_development");
valueForSql.Add(8, locationOfDevelopment);
weightings.Add(8, 3);
sqltext.Add(9, "programming_language");
valueForSql.Add(9, programmingLanguage);
weightings.Add(9, 3);
sqltext.Add(10, "development_environment");
valueForSql.Add(10, developmentEnvironment);
weightings.Add(10, 3);
sqltext.Add(11, "backend");
valueForSql.Add(11, backend);
weightings.Add(11, 3);
sqltext.Add(12, "webserver");
valueForSql.Add(12, webServer);
weightings.Add(12, 3);
List<int> array = new List<int>();
string strConnection = ConfigurationSettings.AppSettings["ConnectionString"];
MySqlConnection connection = new MySqlConnection(strConnection);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader reader;
for (int i = 1; i <= 12; i++)
{
command.CommandText = "SELECT idprojects FROM `test`.`projects` WHERE " + sqltext[i] + " = " + valueForSql[i];
connection.Open();
//int testInt;
reader = command.ExecuteReader();
while (reader.Read())
{
array.Add(Convert.ToInt32(reader["idprojects"].ToString()));
}
foreach (int a in array)
{
if (!rankings.ContainsKey(a))
{
rankings[a] = 0;
}
rankings[a] = rankings[a] + weightings[i];
}
connection.Close();
}
}
समस्या इस पर उत्पन्न होती है कोड के क्षेत्र:
private void getThirdEstimation()
{
ArrayList tempModuleHolder;
string strConnection = ConfigurationSettings.AppSettings["ConnectionString"];
MySqlConnection connection = new MySqlConnection(strConnection);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader reader;
int similarModules;
foreach (KeyValuePair<int, int> kvp in rankings)
{
similarModules = 0;
tempModuleHolder = new ArrayList();
command.CommandText = "SELECT id_modules FROM `test`.`modules_in_project` WHERE id_project = " + kvp.Key;
connection.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
tempModuleHolder.Add(Convert.ToInt32(reader["id_modules"].ToString()));
}
foreach (int i in tempModuleHolder)
{
if(modules.Contains(i))
{
similarModules++;
}
}
if((double)(similarModules/modules.Count)>0.6)
{
//kvp.Value = kvp.Value + 4;
rankings[kvp.Key] = rankings[kvp.Key] + 4;
}
connection.Close();
}
}
जहां समस्या झूठ बहुत सराहना की जाएगी
बीटीडब्ल्यू, विषय से बाहर, आपका MySQL कनेक्शन और MySqlDataReader क्लास निपटान() विधि के लिए IDISposable लागू नहीं करता है, ताकि आप कनेक्शन और पाठक के आसपास ब्लॉक का उपयोग कर उपयोग कर सकें? –
@ydobonmai: 'MySQL कनेक्शन' और 'MySqlDataReader' शायद MySQL डेटाबेस के साथ काम करने के लिए' MySQL.Data.MySqlClient' कक्षाओं को संदर्भित करता है। इसलिए, वे 'आईडीस्पोजेबल' लागू करते हैं और उनके उपयोग को 'उपयोग' ब्लॉक में लपेटा जाना चाहिए। – jason