entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

comparar un array y un generics List

hola!

tengo un array de nombre de archivos de un directorio, y deseo compararlo con un List de objeto DocumentPics y el list es resultado de una función que me retorna el list... ojala poder hacerlo con linq

el array esta asi:

    string[] picList = Directory.GetFiles(@"C:\documentosScaneados\");

y el list esta asi:

    public static List<DocumentPics> FileNamesFromDatabase()
   {List<DocumentPics> resultado = new List<DocumentPics>();
     // aca mas codigo
     return resultado;}

lo que he intentado es:

List<DocumentPics> myList=FileNamesFromDatabase();
bool fileExistInDBase = picList.Except(myList.contains(p=> p.picList));//aca saca 3 errores obviamente la expresión deberia sacar un resultado bool

2 Respuestas

1voto

bl4z3r Puntos16850

Antes de tratar de resolver el problema con Linq, te recomendaría que lo resuelvas de manera mas simple posible.

using System;
using System.Collections.Generic;

public class DocumentPics
{
    public string Path
    {
        get;
        set;
    }

    public DocumentPics(string path)
    {
        Path = path;
    }
}

public class Program
{
    public static void Main()
    {
        string[] listaImagenes = new string[]
        {
            "C:\\Imagen1.png", 
            "C:\\Imagen2.png", 
            "C:\\Imagen3.png", 
            "C:\\Imagen4.png", 
            "C:\\Imagen5.png", 
            "C:\\Imagen6.png",
        };

        List<DocumentPics> listDocs = new List<DocumentPics>()
        {
            new DocumentPics("C:\\Imagen1.png"),
            new DocumentPics("C:\\Imagen3.png"),
            new DocumentPics("C:\\Imagen5.png"),
            new DocumentPics("C:\\Imagen7.png"), 
            new DocumentPics("E:\\Imagen9.png"),
            new DocumentPics("D:\\Imagen11.png"), 
            new DocumentPics("C:\\Imagen13.png"), 
        };

        // 1 es true y 0 es false.
        SonIguales(listaImagenes, listDocs);
    }

    public static void SonIguales(IEnumerable<string> uno, IEnumerable<DocumentPics> otro)
    {
        foreach (var dpics in otro)
        {
            foreach (string path in uno)
            {
                if (dpics.Path.Equals(path))
                {
                    Console.WriteLine("'{0}' == '{1}' -> {2}", dpics.Path, path, true);
                }
                else
                {
                    Console.WriteLine("'{0}' == '{1}' -> {2}", dpics.Path, path, false);
                }
            }
        }
    }
}

El anterior código hace una comparación entre un array de string y una lista de DocsPics como tu lo solicitas.

Espero que te sea de ayuda.

1voto

cobasESP Puntos19650

Haz un doble bucle for anidado, un bucle for que te coja 1 nombre de archivo, y dentro de este otro bucle for que te compare ese nombre con todos los de la otra lista.

for(int i=0;i<lista.lenght;i++){
    String aux = lista[i];
    boolean es_igual = false;
    for(int x=0;x<lista2.size();x++){
        if(lista2.get(x) == aux){
           es_igual = true;
           break;
        }
    }
    if(es_igual){
       break;
    }
}

Un bucle itera entre las string de lso archivos, guardas uno en una variable auxiliar y la comparas con el otro array, pongo un flag boolean para saber cuando es igual y si es igual hago break pa salir del bucle. Ya lo demas es lo que quieras hacer tu con esto.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta