elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  optimizar codigo foreach
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: optimizar codigo foreach  (Leído 3,864 veces)
aspiazu

Desconectado Desconectado

Mensajes: 58


Ver Perfil
optimizar codigo foreach
« en: 8 Abril 2017, 11:09 am »

Buenas ! Tengo 3 foreach,uno para buscar cuantas carpetas hay en un directorio,otro para buscar los png que hay y otro para buscar los exe que hay. El problema es que para buscar cada exe y luego png doi 36 vueltas ,como puedo arreglarlo?como puedo hacer que solo busque los archivos con esas extensiones y no valla comprobando toodos los archivos? Y como puedo hacer que busque png y jpg? y lo mismo con exe y lnk?

Código
  1. foreach (var juego in data.Juegos) {
  2.    }
  3.    //creamos los botones por cada carpeta que tengamos en Apps
  4.    if (Directory.Exists(rutasapp)) {
  5.        foreach (string dataApp in Directory.GetDirectories(rutasapp)) {
  6.            GameObject button = Instantiate(buttonPrefab) as GameObject;
  7.            button.transform.SetParent(layout);
  8.            button.name = "Button" + layout.childCount;
  9.            //buscamos todos los ficheos que sean .exe y los guardamos en data
  10.  
  11.            foreach (string data in Directory.GetFiles(@dataApp)) {
  12.                if (Path.GetExtension(@data) == ".exe") {
  13.                    //al clicar el boton ejecutamos el exe que hemos guardado anteriormente .NO FUNCIONA
  14.                    button.GetComponent<Button>().onClick.AddListener(() => Process.Start(data));
  15.                    UnityEngine.Debug.Log(data);
  16.  
  17.                }
  18.  
  19.                //buscamos todas las imagenes que sean .png y las guardamos en imagenes
  20.                foreach (string imagenes in Directory.GetFiles(@dataApp)) {
  21.                    if (Path.GetExtension(@imagenes) == ".png") {
  22.                         string imgPath = imagenes;
  23.                            //si no exite nos muestra el mensaje de error
  24.                            if (!File.Exists(imgPath)) {
  25.                                UnityEngine.Debug.LogError("File doesn't exist: " + imgPath);
  26.                                return;
  27.                            }


« Última modificación: 8 Abril 2017, 14:46 pm por Eleкtro » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: optimizar codigo foreach
« Respuesta #1 en: 8 Abril 2017, 13:40 pm »

esto es c++?


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
aspiazu

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: optimizar codigo foreach
« Respuesta #2 en: 8 Abril 2017, 14:24 pm »

C#
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: optimizar codigo foreach
« Respuesta #3 en: 8 Abril 2017, 14:28 pm »

tema movido c# es .net
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: optimizar codigo foreach
« Respuesta #4 en: 8 Abril 2017, 16:58 pm »

como puedo hacer que busque png y jpg? y lo mismo con exe y lnk?

En el caso de que Unity permita el uso de LINQ (.NET Framework +3.5):

Código
  1. DirectoryInfo dir = new DirectoryInfo(@"C:\Directory\");
  2. IEnumerable<FileInfo> files =
  3.    from file in dir.EnumerateFiles("*.*", SearchOption.AllDirectories)
  4.    where new string[] { ".png", ".jpg" }.Contains(file.Extension, StringComparer.OrdinalIgnoreCase)
  5.    select file;
  6.  
  7. foreach (FileInfo file in files) {
  8.    Console.WriteLine(file.FullName);
  9. }

En el caso contrario:
Código
  1. DirectoryInfo dir = new DirectoryInfo(@"C:\Directory\");
  2. FileInfo[] files =
  3.    Array.FindAll(dir.GetFiles("*.*", SearchOption.AllDirectories),
  4.                  file => new string[] { ".png",".jpg" }.Contains(file.Extension, StringComparer.OrdinalIgnoreCase));
  5.  
  6. foreach (FileInfo file in files) {
  7.    Console.WriteLine(file.FullName);
  8. }

¡Saludos!
« Última modificación: 8 Abril 2017, 17:09 pm por Eleкtro » En línea



Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: optimizar codigo foreach
« Respuesta #5 en: 8 Abril 2017, 17:00 pm »

Buenas ! Tengo 3 foreach,uno para buscar cuantas carpetas hay en un directorio,otro para buscar los png que hay y otro para buscar los exe que hay. El problema es que para buscar cada exe y luego png doi 36 vueltas ,como puedo arreglarlo?como puedo hacer que solo busque los archivos con esas extensiones y no valla comprobando toodos los archivos? Y como puedo hacer que busque png y jpg? y lo mismo con exe y lnk?

Código:
foreach (string data in Directory.GetFiles(@dataApp)) {
 if (Path.GetExtension(@data) == ".exe") {
...
foreach (string imagenes in Directory.GetFiles(@dataApp)) {
if (Path.GetExtension(@imagenes) == ".png") {
                     
Cuando estás en el entorno de Visual Studio, selecciona el objeto "Directory" o el método "Getfiles", y pulsa la tecla F2, para abrir el examinador de objetos...
Y si no tienes instalado en casa el MSDN, entonces recurre a internet:
https://msdn.microsoft.com/es-es/library/system.io.directory(v=vs.110).aspx
...Entonces verás que el método "Getfiles", tiene varias sobrecargas...
Una de ellas por ejemplo tiene esta firma:
public static string[] GetFiles(string path, string searchPattern}
Luego tú, lo invocarías de manera sencilla así:
foreach (string data in Directory.GetFiles(@dataApp, "*.png")) {
  ....
   haz lo que quieras con el fichero obtenido...


...pero no te quedes sólo con esa sobrecarga, debes mirar, si otra te resulta aún más útil, en base a lo que luego pretendas hacer con el fichero obtenido...
por ejemplo Esta otra sobrecarga, tiene aún una opción más para buscar de forma recursiva en subcarpetas:
public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption )
(usando la opción AllDirectories)

Con lo que incluso te ahorrarías el bucle externo:
Citar
if (Directory.Exists(rutasapp)) {
        foreach (string dataApp in Directory.GetDirectories(rutasapp)) {
También tienes en el mismo objeto directory, el método EnumerateFiles....

En fin, es info que está ahí, mejor si está instalado en tu equipo, así te basta usar la tecla F2 para navegar entre los objetos y ver qué método se ajusta mejor a tus necesidades... y si no lo tienes instalado, entonces la dirección de MSDN, debería estás en tus favoritos/marcadores:
https://msdn.microsoft.com/es-es/library/
https://msdn.microsoft.com/es-es/library/ms310241
En línea

aspiazu

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: optimizar codigo foreach
« Respuesta #6 en: 8 Abril 2017, 19:45 pm »

Gracias usando using System.Linq; lo hice.

Echare un vistazo a lo que puso el compi NEBIRE
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Optimizar Codigo
PHP
FFFenix 0 1,489 Último mensaje 9 Septiembre 2011, 03:18 am
por FFFenix
Optimizar código sobrecargado en c++
Programación C/C++
angoav98 1 2,407 Último mensaje 21 Febrero 2012, 14:50 pm
por Xandrete
¿Optimizar código?
ASM
paulagarcum 2 2,641 Último mensaje 4 Abril 2013, 13:46 pm
por paulagarcum
Ayuda a optimizar codigo
Programación Visual Basic
Tomas1982 0 3,430 Último mensaje 5 Octubre 2016, 18:02 pm
por Tomas1982
Optimizar un codigo
Programación C/C++
arcanaer 0 1,822 Último mensaje 23 Noviembre 2016, 04:16 am
por arcanaer
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines