none
Listar Faltantes correlativos con LINQ RRS feed

  • Pregunta

  • Hola eso tengo 2 textbox donde voy a ingresar datos numericos ejemplo 01 y 36 ahora tengo en la tabla ese campo con datos quisiera mostrar la cantidad de faltantes y los numeros por ejemplo que falte el 05,06,07,15,17 todo esto con EF y Linq desde ya gracias
    miércoles, 30 de marzo de 2016 17:28

Todas las respuestas

  • hola

    podria intentar algo como ser

    var result = dbContext.NombreTabla.Where(x=> !x.Contains(TextBox1.Text) || !x.Contains(TextBox2.Text));
    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 30 de marzo de 2016 17:47
  • Hola, creo que lo que buscas lo tenés que hacer en memoria, trayéndote los que si están y luego iterar.

    int inicio = int.Parse(tb1.Text), fin = int.Parse(tb2.Text);
    var losQueSiEstan = (from n in dbContext.Numeros
                         where inicio <= n.N && n.N <= fin
                         select n.N).ToList();
    var faltan = List<int>();
    for(int i = inicio; i<=fin; i++)
      if(!losQueSiEstan.Any(n => n == i))
        faltan.Add(i);
    return faltan;

    Salu2

    miércoles, 30 de marzo de 2016 18:13
  • hola

    podria intentar algo como ser

    var result = dbContext.NombreTabla.Where(x=> !x.Contains(TextBox1.Text) || !x.Contains(TextBox2.Text));
    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola Gracias por la pronta respuesta donde iría el nombre del campo a buscar y ese campo es integer gracias 
    miércoles, 30 de marzo de 2016 18:14
  • Puesto que es en base de datos, yo no haría eso en LINQ.  Lo que usted propone es un caso muy conocido:  Find gaps.  El inverso es bien conocido también:  Find islands.

    Si lee este artículo encontrará cómo se resuelven ambos.  Yo encapsularía la lógica en un PA y luego mapearía el PA a EF.


    Jose R. MCP
    Code Samples

    miércoles, 30 de marzo de 2016 18:28
  • Hola matias gracias por tu respuesta la probé funciona pero va muy lento esto es por lo que comentas que trabaja en memoria o es por otras cosa ?
    miércoles, 30 de marzo de 2016 21:48
  • hola lei el articulo bastante complejo para mi nivel actual otra cosa como comentas como lo aplicaría en EF gracias
    miércoles, 30 de marzo de 2016 21:50
  • Entiendo que sea elevado, pero no hay de otra.  Calcular los gaps o islands fuera de SQL Server implica que SQL Server debe enviar el 100% de los datos que estén entre los números que el usuario digite.  Hacer esto por LINQ es una tontería.  Si no entiende ese artículo, busque otros al respecto.

    Jose R. MCP
    Code Samples

    jueves, 31 de marzo de 2016 13:36
  • Hola gracias intentare reproducir ese ejemplo entenderlo y aplicarlo
    jueves, 31 de marzo de 2016 16:32