Comparar 2 vectores y eliminar datos duplicados

Espero se encuentre con bien en esta ocasión acudo a usted debido a que no encuentro la solución a mi problema y espero ud me pueda ayudar
Estoy trabajando actualmente en asp.net con c# ahora bien tengo
1er vec 2do vec 2do vec resultante
Enero Enero Marzo
Febrero Febrero Abril
Marzo Mayo
Abril
Mayo
Dos vectores los cuales contienen los meses pero deseo que los meses que se encuentren el primer vector no aparezcan en el segundo(y si aparecen se borren)
El problema esta en que el primer vector es dinámico osea puede cambiar el numero de meses que contenga puede ser solo enero o los doce meses entonces el segundo se debe acoplar a esta situación eliminando los meses que contenga el primero así tenga solo enero o todos sin importar siestan en orden o no
intente empezar pero no he logrado pasar de aquí pues no se como hacer las comparaciones
DataTable MesesLlenos = WB.LlenaMeses(Año, Consulta)
string[] Meses = new string[] { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" };
for (int i = 0; i < NumeroMeses; i++)
{
if (MesesLlenos.Rows[0].ToString() == Meses)
{
int valor = Meses.Length - 1;
for (int c = 0; c < valor; c++)
{
Meses[c] = Meses[c - 1];
}
}
}

2 respuestas

Respuesta
1
Creo que para comenzar deberías tener un objeto complejo y no un DataTable, es más limpio, supongamos que tenemos la clase
public class InfoMeses {
public int Id { get;set; }
public int Dia{ get;set; }
public string Mes { get;set; }
public int Año { get;set; }
public override bool Equals(object obj) {
InfoMeses tmp = obj as InfoMeses ;
if (tmp == null) return false;
return Mes.Equals(tmp.Mes);
}
public override int GetHashCode()
{
return Mes.GetHashCode();
}
}
para usar esto
List<InfoMeses> v1 = new List<InfoMeses>();
List<InfoMeses> v2 = new List<InfoMeses>();
foreach (InfoMeses item in v1) {
v2.remove(item);
}
Esto te serviría mejor y es un código más limpio
Respuesta
1
Que tal pues la verdad
Yo trabajaría con tres vectores y fores anidados
1 que es el dinámico otro el estático con los 12 meses y el tercero para ir llenando los que no estén en el tercero que iniciaría como una copia del segundo tendríamos meses y meses2 que serian iguales
El primer for seria de los meses totales, el mesesllenos es el que obtienes y meses2 seria una copia de meses como te mencione anteriormente
fot (int i=0;i<meses.count;i++)
{
for(int j=0;j<mesesllenos.count;j++)
{
if(meses==mesesllenos[j])
{
meses2="";
break;
}
}
}
Con esto meses2 queda "" en las posiciones o meses los que ya trae el primer vector, vasta con que se repita una o varias veces, el break; es para que encuentra 1 solo igual ya no lo hace el resto del bucle del segundo for sino reemplaza y corta y meses2 utilizo porque dan errores al querer modificar una fila que esta siendo usada

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas