private static HashSet <Periodo> ProcesarIntersecciones(HashSet <Periodo> periodos) { HashSet <Periodo> salida = new HashSet <Periodo>(); List <Periodo> copia = periodos.ToList(); foreach (var item in periodos) { //Se elimina el propio elemento para evitar iterar sobre el mismo copia.Remove(item); foreach (var item2 in copia) { Periodo interseccion = item.Intersect(item2); if (interseccion != null) { salida.Add(interseccion); } } } return(salida); }
private static HashSet <Periodo> LeerFichero(string rutaCompleta) { HashSet <Periodo> periodos = new HashSet <Periodo>(); try { var reader = new StreamReader(File.OpenRead(rutaCompleta)); while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); Periodo periodo = new Periodo(values[0].Trim(), values[1].Trim(), values[2].Trim()); if (periodo.IsValid()) { if (periodos.Add(periodo)) { Console.WriteLine("\tPeriodo añadido al conjunto-> Id : {0} | Ini: {1} | Fin: {2}", periodo.Id, periodo.Ini, periodo.Fin); } else { Console.WriteLine("\tPeriodo ya existente en el conjunto-> Id : {0} | Ini: {1} | Fin: {2}", periodo.Id, periodo.Ini, periodo.Fin); } } else { Console.WriteLine("\tPeriodo incorrecto, no se añade al conjunto-> Id : {0} | Ini: {1} | Fin: {2}", periodo.Id, periodo.Ini, periodo.Fin); } } } catch (FileNotFoundException) { Console.WriteLine("No se ha encontrado el fichero especificado, por favor, revise si el fichero existe y la ruta está bien indicado en el fichero de configuracion"); } return(periodos); }
public bool Equals(Periodo obj) { return((Ini.Equals(obj.Ini) && Fin.Equals(obj.Fin)) || Id.Equals(obj.Id)); }