I am trying to perform the comparison of 2 data that is obtained from 2 FOR loops. I hope you can help me. Thanks.
HERE MY CODE:
try
{
CN_Guias guias = new CN_Guias();
DateTime Hoy = DateTime.Today;
string fecha_actual = Hoy.ToString("dd/MM/yyyy");
string mes, año;
mes = txt_mes.Text;
año = txt_anno.Text;
string ruta = @"" + txt_ruta.Text + año + mes + "";
String[] dirs = System.IO.Directory.GetFiles(ruta);
int cantidad_imagen_db = guias.Listar_Guias_xMes_xAño(mes, año).Rows.Count;
//MessageBox.Show(cantidad_imagen_db.ToString());
//(Convert.ToInt32(mes), Convert.ToInt32(año)).Rows.Count;
//INICIO FOR
for (int o = 0; o < cantidad_imagen_db; o++) //Recorre la cantidad de Imagenes de la DB
{
string nom_imagen_db = guias.Listar_Guias_xMes_xAño(mes, año).Rows[o][0].ToString();
//MessageBox.Show(nom_imagen_db);
//INICIO FOR
for (int i = 0; i < dirs.Length; i++)
{
string nom_img = dirs[i];
string cadenaTexto = nom_img;
String[] resultado = cadenaTexto.Split('\\');
string ima_guia = resultado[resultado.Length - 1];
string cadenaTexto2 = ima_guia;
String[] resultado2 = cadenaTexto2.Split('.');
string ima_guia2 = resultado2[resultado2.Length - 2];
//MessageBox.Show(ima_guia2);
//VALIDAR INGUALDAD DE NOMBRES
if (nom_imagen_db == ima_guia2) //-------> AQUI COMPARO LOS NOMBRES(SI FUNCIONA) PERO EL TEMA ES EN LA LINEA DE ABAJO
{ //IF EL NOMBRE DE LA BASE DE DATOS ES IGUAL A LA QUE RECORRE EL OTRO FOR(NO REALIZAR NADA)
//PERO SI NO COINDICE --> QUE HAGA LO DE ABAJO
MessageBox.Show("OK"); }
else {
//LA IDEA ES QUE LLAME A UNA FUNCIÓN DE INSERCIÓN -> PARA REGISTRAR QUE NO TIENE IMAGEN
// EL PROBLEMA ES QUE EL FOR RECORRE Y VALIDA CON CADA UNA DE ELLA
// EJEMPLO: SI EN LA DB TENGO EL DATO "IMAGEN-0001" Y EN EL FOR(IMAGEN-0001)--> NO REALIZARA NADA
// PERO DENTRO DEL FOR HABRA MAS DATOS CON LOS QUE VALIDARA -> ESO SIGNIFICA REALIZARA VARIAS INSERCIONES EN LA DB.
//COMO PUEDO SOLUCIONAR ESO, PARA QUE SOLO INSERTE 1 VEZ CUANDO NO ENCUENTRE EL DATO
//*************************************************************************
//TABLA-DB | FOR QUE OBTIENE NOMBRES DE IMAGEN DE UNA CARPETA
___________________________________________________________________________
//IMAGEN-0001 | IMAGEN-0001
| IMAGEN-0002
| IMAGEN-....
//*************************************************************************
//CON ESO HARIA QUE EL DATO DE LA TABLA-DB IMAGEN-001 BUSQUE SU IGUALDAD EN EL FOR,
//ESTO SUELE SER ALEATORIO, ASI QUE PUEDE IR COMPARANDO
//IF(IMAGEN-0001 = IMAGEN-0002){"NO TIENE"}--->PERO ACA ESTARIA REALIZANDO EL REGISTRO EN LA BASE DE DATOS -ERROR!!!!
//IF(IMAGEN-0001 = IMAGEN-0001){"SI TIENE"}
MessageBox.Show("NO TIENE IMAGEN"); }
}
//FIN FOR
}
//FIN FOR
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
Your problem is just a matter of logic...
You have two lists, and you want to compare if the other is in one or not...
I mean, for simplicity let's use your code, although showing your error in the middle of the code only makes it confusing.
For your understanding, what I did was simplify your problem. I make the comparison thinking that there is no equality. If there is an equality, I set the ExistsImage variable to true. When the for ends, I check if the image exists, and if it doesn't exist (that is, ImageExists is still false, as I put it before the for) I insert the record.